首页 文章

可以读/写.xls文件的.NET Excel库[关闭]

提问于
浏览
42

我正在寻找一个读/写.xls(而不是.xlsx)文件的Excel库 .

我正在使用excellibrary,但它非常多,我can't seem to open the files I create . 该问题已有近一年的历史,尚未得到修复 .

我在另一个线程中看到有人建议EPPlus,但这只适用于2007/2010 .xlsx格式 .

我过去曾经使用过Koogra,对它很满意,但我相信它只能读...不写 .

如果您知道图书馆,请告诉我它的名称 .

编辑:我很高兴用必要的内置Microsoft.Office.Interop.Excel创建我的Excel文件,但是我的机器有Office 2007而目标机器只有Office 2003.我注意到我有2个文件版本那个库:12和14.我检查了目标机器上的Excel版本,它是11.8169.8172 - 我假设内置的Excel互操作不能在目标上运行?

3 回答

  • 53

    我推荐NPOI . NPOI是 FREE ,仅适用于.XLS文件 . 它对我帮助很大 .

    详细信息:如果使用NPOI,则无需在计算机上安装Microsoft Office即可使用.XLS文件 .

    查看这些博文:

    Creating Excel spreadsheets .XLS and .XLSX in C#

    NPOI with Excel Table and dynamic Chart

    [UPDATE]

    NPOI 2.0增加了对XLSX和DOCX的支持 .

    你可以在这里读更多关于它的内容:

    NPOI 2.0 series of posts scheduled

  • 0

    您是否有理由不能使用Excel ODBC连接来读取和写入Excel?例如,我使用以下代码逐行读取Excel文件,如数据库:

    private DataTable LoadExcelData(string fileName)
    {
      string Connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\";";
    
      OleDbConnection con = new OleDbConnection(Connection);
    
      OleDbCommand command = new OleDbCommand();
    
      DataTable dt = new DataTable(); OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from [Sheet1$] WHERE LastName <> '' ORDER BY LastName, FirstName", con);
    
      myCommand.Fill(dt);
    
      Console.WriteLine(dt.Rows.Count);
    
      return dt;
    }
    

    您可以用同样的方式写入Excel“数据库” . 如您所见,您可以选择要使用的版本号,以便可以使用Excel 2003降级机器的Excel版本 . 实际上,使用Interop也是如此 . 您可以使用较低版本,它应该适用于Excel 2003,即使您在开发PC上只有更高版本 .

  • 9

    对于读/写excel文件,您可以考虑调用Excel Jetcell .NET component的第三方工具:

    C#样本

    // Create New Excel Workbook
    ExcelWorkbook Wbook = new ExcelWorkbook();
    ExcelCellCollection Cells = Wbook.Worksheets.Add("Sheet1").Cells;
    
    Cells["A1"].Value = "Excel writer example (C#)";
    Cells["A1"].Style.Font.Bold = true;
    Cells["B1"].Value = "=550 + 5";
    
    // Write Excel XLS file
    Wbook.WriteXLS("excel_net.xls");
    

    VB.NET示例

    ' Create New Excel Workbook
    Dim Wbook As ExcelWorkbook = New ExcelWorkbook()
    Dim Cells As ExcelCellCollection = Wbook.Worksheets.Add("Sheet1").Cells
    
    Cells("A1").Value = "Excel writer example (C#)"
    Cells("A1").Style.Font.Bold = True
    Cells("B1").Value = "=550 + 5"
    
    ' Write Excel XLS file
    Wbook.WriteXLS("excel_net.xls")
    

相关问题