关于c#:. NET Excel库,可以读/写.xls文件

.NET Excel Library that can read/write .xls files

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

我正在使用Excellibrary,但它非常麻烦,我似乎无法打开我创建的文件。这个问题已经知道将近一年了,还没有解决。

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

我以前用过古格拉语,对它很满意,但我相信它只能读…不写。

如果你知道图书馆,请告诉我它叫什么。

编辑:如果需要,我很高兴使用内置的microsoft.office.interop.excel创建Excel文件,但是我的计算机有Office2007,而目标计算机只有Office2003。我注意到那个库有两个文件版本:12和14。我检查了目标机器上的excel版本,它是11.8169.8172-我假设内置的excel interop在目标机器上不工作?


我推荐NPOI。NPOI是免费的,只与.xls文件一起工作。这对我有很大帮助。

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

检查这些日志:

在C中创建Excel电子表格.xls和.xlsx#

带Excel表格和动态图表的NPOI

[更新]

NPOI2.0增加了对XLSX和DocX的支持。

您可以在这里阅读更多信息:

计划的NPOI 2.0系列职位


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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"数据库"。如您所见,您可以选择要使用的版本号,以便您可以为使用Excel2003的计算机降级Excel版本。实际上,使用互操作也是如此。您可以使用较低的版本,它应该与Excel2003一起工作,即使您的开发PC上只有较高的版本。


您可以考虑为读/写Excel文件调用Excel Jetcell.net组件的第三方工具:

C样本

1
2
3
4
5
6
7
8
9
10
// 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样本

2