2010-05-14 45 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文件沒有免費的實現,我知道:(

相關問題