Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 可以读取/写入.xls文件的.NET Excel库_C#_Excel_Xls_Read Write - Fatal编程技术网

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

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

我正在寻找一个Excel库,它可以读取/写入.xls而不是.xlsx文件

我在用,但车太多了,我也不知道。这个问题已经被发现了将近一年,还没有得到解决

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

我过去用过,对它很满意,但我相信它只能读。。。不写

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

编辑:
如果有必要,我很乐意使用内置的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。