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


当前回答

我最近刚刚使用了FlexCel.NET,发现它是一个优秀的库!我对太多的软件产品不这么说。在这里进行整个销售宣传没有意义,你可以阅读他们网站上的所有功能。

这是一个商业产品,但如果你购买它,你会得到完整的源代码。所以我想,如果你真的想,你可以将它编译成你的程序集。否则,它只是一个额外的程序集来xcopy-没有配置或安装或类似的东西。

我认为,如果没有第三方库,您将找不到任何方法来做到这一点,因为.NET框架显然没有内置的支持,OLE自动化只是一个痛苦的世界。

其他回答

使用Open XML SDK 2.0 for Microsoft Office怎么样?

一些好处:

不需要安装Office由Microsoft制作=像样的MSDN文档只有一个.Net dll可用于项目SDK附带了许多工具,如diff、验证器等

链接:

githubMSDN主登录“How Do I…”起始页blogsMSDN brian_jones发布SDKblogs.MSDN brian_jones描述SDK处理大型文件而不崩溃(与DOM方法不同)

我也投票支持GemBox.Spreadsheet。

非常快速且易于使用,网站上有大量示例。

以全新的执行速度完成了我的报告任务。

如果您正在创建Excel 2007/2010文件,请尝试此开源项目:https://github.com/closedxml/closedxml

它提供了一种面向对象的方式来操作文件(类似于VBA),而无需处理XML文档的麻烦。可以使用使用任何.NET语言,如C#和Visual Basic(VB)。ClosedXML允许您在不使用Excel的情况下创建Excel 2007/2010文件应用典型的示例是在web上创建Excel报表服务器:var工作簿=新XLWorkbook();var worksheet=workbook.Worksheets.Add(“样本表”);worksheet.Cell(“A1”).Value=“Hello World!”;工作簿.另存为(“HelloWorld.xlsx”);

要将xls保存为xlsx格式,我们只需要从Microsoft.Office.Interop.Excel库调用SaveAs方法。该方法将采用大约16个参数,其中一个参数是文件格式。

Microsoft文档:此处另存为方法参数

我们需要传递的对象如下

wb.SaveAs(filename, 51, System.Reflection.Missing.Value,
System.Reflection.Missing.Value, false, false, 1,1, true, 
System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value)

这里,51是XLSX的枚举值

对于不同文件格式的另存为,可以参考xlFileFormat

您可以考虑使用XML Spreadsheet 2003格式创建文件。这是一种简单的XML格式,使用了一个文档化的模式。