C# 可以读取/写入.xls文件的.NET Excel库
我正在寻找一个Excel库,它可以读取/写入.xls而不是.xlsx文件 我在用,但车太多了,我也不知道。这个问题已经被发现了将近一年,还没有得到解决 我在别人建议的另一个线程中看到过,但这只适用于2007/2010.xlsx格式 我过去用过,对它很满意,但我相信它只能读。。。不写 如果你知道图书馆,请告诉我它叫什么 编辑:C# 可以读取/写入.xls文件的.NET Excel库,c#,excel,xls,read-write,C#,Excel,Xls,Read Write,我正在寻找一个Excel库,它可以读取/写入.xls而不是.xlsx文件 我在用,但车太多了,我也不知道。这个问题已经被发现了将近一年,还没有得到解决 我在别人建议的另一个线程中看到过,但这只适用于2007/2010.xlsx格式 我过去用过,对它很满意,但我相信它只能读。。。不写 如果你知道图书馆,请告诉我它叫什么 编辑: 如果有必要,我很乐意使用内置的Microsoft.Office.Interop.Excel创建我的Excel文件,但是我的机器有Office 2007,目标机器只有Offi
如果有必要,我很乐意使用内置的Microsoft.Office.Interop.Excel创建我的Excel文件,但是我的机器有Office 2007,目标机器只有Office 2003。我注意到该库有两个文件版本:12和14。我在目标计算机上检查了Excel版本,它是11.8169.8172-我假设内置的Excel互操作在目标计算机上不起作用?有什么原因不能使用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版本。实际上,使用互操作也是如此。您可以使用较低版本,它应该与Excel 2003配合使用,即使您的开发PC上只有较高版本。我推荐。NPOI是免费的,专门用于.XLS文件。这对我帮助很大
详细信息:如果使用NPOI,则无需在计算机上安装Microsoft Office即可处理.XLS文件
查看以下博客帖子:
[更新]
NPOI2.0增加了对XLSX和DOCX的支持
您可以在此处阅读更多信息:
可以考虑第三方工具调用读/写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")
您必须绝对直接使用XLS文件吗?你是否排除了只使用CSV文件的可能性?我绝对必须使用XLS,而不是CSV或XLSX。我正在将结果上载到第三方web服务,因此对文件格式没有任何控制权。我知道我听起来很愚蠢,因为我从未使用过C,但C可以使用后期绑定吗?如果是这样的话,您只需执行CreateObjectExcel.Application thingamuhjig即可。无论如何,您都可以在VB/VBA/VB.NET中完成。不需要所有其他的图书馆,甚至不需要参考资料。谢谢。事实上,我在发布问题后不久就开始使用NPOI,现在仍在使用它。没有太多的doc,名称空间都有非常不友好的缩写,但我设法找到了它,它正在工作:这很好@Ozzah,但是你能使用Npoi操作xls模板吗?codeplex链接似乎有点过时了,这不应该指向显示项目仍然处于活动状态的链接吗?同样,Npoi-like POI不支持BIFF8以下的BIFF格式-只需了解提供的电子表格似乎是Excel 5.0/7.0 BIFF5格式。POI仅支持Excel 97/2000/XP/2003版本中的BIFF8格式。对于那些寻找解决这个问题的方法的人来说,这可能会有所帮助-谢谢…使用了epplus…我认为epplus应该删除这个bug..哈哈哈第二个从epplus迁移到NPOII的人知道这是一个相当老的帖子,但我想说的是,当我尝试使用此方法读取工作表中的~35k行时,出现了内存不足错误。我正在使用此方法,并且面临着必须在部署目标上安装excel组件的问题。有解决办法吗?安装access数据库组件也不是一个选项。如果部署目标上没有Excel,则应寻找其他解决方案来完成此操作。查看上面的公认解决方案,了解如何在未安装Excel的情况下使用Excel。