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

时间:2011-05-02 01:17:46

标签: c# excel xls read-write

我正在寻找一个读取/写入.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 个答案:

答案 0 :(得分:52)

我建议NPOI。 NPOI 免费,仅适用于.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

答案 1 :(得分:9)

您是否有理由不能使用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也是如此。您可以使用较低版本,即使您的开发PC上只有更高版本,也可以使用Excel 2003。

答案 2 :(得分:0)

您可以考虑为读/写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")