2010-05-14 111 views
2

有没有一个程序化的解决方案,这不涉及服务器上的Office?如何以编程方式将.xls和.csv文件转换为.xlsx?

更新: 该解决方案将被部署在.NET店,所以现在PHP和Java的方法是上不了台面的(虽然我留下了深刻印象库本身)。

我们将以csv,.xls和.xlsx格式接收需要解析并将其数据推入数据库的文档。我们正在计划使用OpenXML SDK来实现所有的解析优势,并希望仅通过一种文件类型进行操作。

+1

这些问题是否有帮助吗?http://stackoverflow.com/questions/1486256/creating-excel-or-excel-compatible-spreadsheets-on -the-server-side-in-c http://stackoverflow.com/questions/1642702/generating-nicely-formatted-excel-files-in-asp-net-without-having-excel-on-server – 2010-05-14 19:37:10

+0

最好的答案取决于打算使用或熟悉的编程语言,我也会提及它们,它也可能有助于您更好地了解上下文,它是客户端应用程序吗?Swing还是Web应用程序?JSP/Servlet还是PHP?等等 – BalusC 2010-05-15 17:50:58

回答

3

对于Java,您可以使用Apache POI library来实现此目的。

HSSF是POI Project的Excel '97(-2007)文件格式的纯Java实现。

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

我用它在.xls.xlsx文件的完整组合,以阅读,我总是输出.xlsx

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

Super Csv的主要动机是为Java提供最好,最快速,最适合程序员的免费CSV包。

2

或者,如果你想有一个PHP的解决方案,而不是Java

0

,你可以使用解析列使用PHPExcel(http://www.phpexcel.net)。

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); 
     } 
1

对于CSV文件,我会建议的http://kbcsv.codeplex.com/组合来读取csv文件到一个DataTable和EPPPLUS利用其.FromDataTable方法将其转换为XLSX文件。 我工作很好,速度非常快。 对于读取xls文件没有免费的实现,我知道:(

相关问题