我如何编程将.xls和.csv文件转换为.xlsx?

有没有一个程序化的解决scheme,这不涉及在服务器上的Office?

更新:这个解决scheme将被部署在一个.Net商店,所以现在PHP和Java方法不在桌面上(虽然我对这些库本身印象深刻)。

我们将以csv,.xls和.xlsx格式接收需要parsing的数据,并将其数据推送到数据库中。 我们正在计划使用OpenXML SDK来实现所有的parsing效果,并希望仅使用一种文件types。

您可以使用Java的Apache POI库来实现这一点。

HSSF是POI项目的纯粹Java实现Excel 97(-2007)文件格式。

XSSF是POI Project的Excel 2007 OOXML(.xlsx)文件格式的纯Java实现。

我用它来读取.xls.xlsx文件的完整组合,而且我总是输出.xlsx

对于.csv文件,使用Super CSV库导入并使用上面的Apache POI库导出。

超级Csv的主要动机是成为最好的,最快的和最程序员友好的免费的CSV CSV包。

或者使用PHPExcel( http://www.phpexcel.net ),如果你想要一个PHP解决scheme,而不是Java

对于csv文件,我build议组合http://kbcsv.codeplex.com/将csv文件读入数据表,并使用EPPPLUS来使用.FromDataTable方法将其转换为xlsx文件。 我工作很好,速度非常快。 对于读取xls文件没有免费的实现,我知道:(

你可以使用parsing列。

  object columnValue = ws.Cells[i, ColIndex, i, ColIndex].Value; // get Specific cell. 

您可以使用下面的方法.csv,xlsx,.txt文件。

  public yourReturnType compute() { #region .XLSX Section if (FilePath.FullName.Contains(".xlsx") || FilePath.FullName.Contains(".xls")) { // Open and read the XlSX file. using (var package = new ExcelPackage(FilePath)) { ExcelWorkbook wb = package.Workbook; // Get the work book in the file if (wb != null) { if (wb.Worksheets.Count > 0) { ExcelWorksheet ws = wb.Worksheets.First(); // Get the first worksheet yourParseCode(ws); } } // if End. } // using end. } #endregion #region .CSV Section if (FilePath.FullName.Contains(".csv") || FilePath.FullName.Contains(".txt")) { CSVParser c = new CSVParser(FilePath); DataTable dt = c.ReadCSVFile(); using (ExcelPackage pck = new ExcelPackage()) { ExcelWorksheet ws = pck.Workbook.Worksheets.Add("temporary"); ws.Cells["A1"].LoadFromDataTable(dt, true); yourParseCode (ws); ////pck.Save(); // no need to save this temporary sheet. } } #endregion return (yourReturnType ); }