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

Ozz*_*zah 44 c# excel xls read-write

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

我正在使用excellibrary,但它非常多,我似乎无法打开我创建的文件.该问题已有近一年的历史,尚未得到修复.

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

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

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

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

Len*_*rri 53

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

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

查看这些博文:

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

NPOI与Excel表和动态图表

[UPDATE]

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

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

NPOI 2.0系列帖子预定

  • 谢谢.实际上我在发布问题后不久就已经开始使用NPOI并且仍在使用它.没有很多doc和命名空间都有非常不友好的缩写,但我设法弄清楚它正在工作:) (2认同)

IAm*_*rey 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;
}
Run Code Online (Sandbox Code Playgroud)

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

  • 我知道这是一个相当古老的帖子,但是当我尝试用这种方法读取一张表中的~35k行时,我想说明我发现"内存不足"错误. (3认同)