可以读取/写入.xls文件的.NET Excel库

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

我正在使用excellibrary,但它是非常错误的,我似乎无法打开我创build的文件 。 这个问题已经有近一年的时间了,还没有确定。

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

我过去曾经使用过Koogra ,并且对它很满意,但是我相信它只能读……不写。

如果你知道一个图书馆,请让我知道它叫什么。

编辑:我很高兴创build我的Excel文件与内置的Microsoft.Office.Interop.Excel如果有必要,但是我的机器有Office 2007和目标机器只有Office 2003.我注意到我有2个文件版本该库:12和14.我检查了目标机器上的Excel版本,它是11.8169.8172 – 我假设内置的Excel互操作对目标不起作用?

    我会推荐NPOI 。 NPOI是免费的 ,专门用于.XLS文件。 它帮了我很多。

    详细信息:如果您使用NPOI,则不需要在计算机上安装Microsoft Office以处理.XLS文件。

    检查这些博客文章:

    在C#中创buildExcel电子表格.XLS和.XLSX

    NPOI与Excel表和dynamic图表

    [UPDATE]

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

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

    NPOI 2.0系列的post预定

    是否有一个原因,您不能使用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“数据库”。 正如您所看到的,您可以select要使用的版本号,以便您可以使用Excel 2003降级机器的Excel版本。实际上,使用Interop也是如此。 您可以使用较低的版本,即使您的开发PC上只有较高的版本,也可以使用Excel 2003。

    您可以考虑第三方工具,称为Excel Jetcell .NET组件读取/写入Excel文件:

    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")