我怎么能以编程方式将.xls和.csv文件转换为.xlsx?

时间:2010-05-14 19:33:27

标签: excel

是否有一个程序化的解决方案,不涉及在服务器上安装Office?

更新 这个解决方案将部署在一个.Net商店中,所以目前还没有PHP和Java方法(尽管我对这些库本身印象深刻)。

我们将接收需要解析的csv,.xls和.xlsx格式的文档,并将其数据推送到数据库中。我们计划使用OpenXML SDK来解决所有解析问题,并希望只对一种文件类型进行操作。

4 个答案:

答案 0 :(得分:3)

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

  

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

     

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

我用它来阅读完整的.xls.xlsx文件,我总是输出.xlsx

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

  

Super Csv的主要动机是成为Java上最好,最快,程序最友好的免费CSV软件包。

答案 1 :(得分:2)

如果您想要PHP解决方案而不是java

,请使用PHPExcel(http://www.phpexcel.net

答案 2 :(得分:1)

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

答案 3 :(得分:0)

您可以使用解析列。

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