如何使用C#创建Excel电子表格而不需要在运行代码的计算机上安装Excel?


当前回答

实际上,您可能想查看C#中可用的互操作类(例如Microsoft.Office.interop.Excel)。您可以说没有OLE(这不是),但互操作类非常容易使用。在这里查看C#文档(Interop for Excel从C#PDF的第1072页开始)。

如果你没有尝试过,你可能会印象深刻。

请注意Microsoft对此的立场:

Microsoft当前不建议也不支持,从任何无人值守、,非交互式客户端应用程序或组件(包括ASP,ASP.NET、DCOM和NT服务),因为Office可能表现出不稳定Office在此环境中运行时的行为和/或死锁。

其他回答

您可以使用OLEDB创建和操作Excel文件。选中此项:使用OLEDB读写Excel。

典型示例:

using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\temp\\test.xls;Extended Properties='Excel 8.0;HDR=Yes'"))
{
  conn.Open();
  OleDbCommand cmd = new OleDbCommand("CREATE TABLE [Sheet1] ([Column1] string, [Column2] string)", conn);
  cmd.ExecuteNonQuery();
}

编辑-更多链接:

嘿,脚本人!如何在不使用Excel的情况下从Excel读取?如何使用ADO.NET在Visual Basic.NET中检索和修改Excel工作簿中的记录使用ADO.NET C#DbProviderFactory读写Excel电子表格

IKVM+波伊

或者,你可以使用Interop。。。

商业解决方案SpreadsheetGearfor.NET将做到这一点。

您可以在此处查看ASP.NET(C#和VB)的实时示例,并在此处下载评估版本。

免责声明:我拥有SpreadsheetGear LLC

一个非常轻量级的选项可能是使用HTML表。只需在文件中创建head、body和table标记,然后将其另存为扩展名为.xls的文件。您可以使用Microsoft特定的属性来设置输出样式,包括公式。

我意识到,您可能没有在web应用程序中对此进行编码,但这里有一个通过HTML表组成Excel文件的示例。如果您正在编写控制台应用程序、桌面应用程序或服务,则可以使用此技术。

下面是使用LINQ to XML完成此操作的方法,并提供示例代码:

用LINQ to XML快速导入和导出Excel数据

它有点复杂,因为您必须导入名称空间等等,但它确实可以避免任何外部依赖。

(当然,它是VB.NET,而不是C#,但您可以始终在自己的项目中隔离VB.NET内容,以使用XML文字,并使用C#执行其他所有操作。)