如何以编程方式创建“真正的”Excel文件

8
可能重复:
在ASP.NET中生成Excel文件 我的问题是:如何以编程方式创建“真正的”Excel文件? 注意:我不是指CSV、HTML/CSS或XML文件,而是指以与Excel保存电子表格相同的格式编写的文件。 背景:我正在开发一个ASP.Net应用程序,其中包括Telerik的RadGrid。我们目前正在使用RadGrid的ExportToExcel()函数,但一些客户需要能够使用Excel Viewer查看这些导出内容。Telerik的函数会导出基于HTML/CSS的文件,完整版本的Excel可以打开,但Excel Viewer无法打开。
我相信可以通过编程方式创建“真正的”Excel文件,但我不知道从哪里开始。是否有一个SDK可以帮助我做到这一点?
任何建议都将不胜感激。提前致谢。

我也在寻找答案。一个选项是使用Interop服务来使用Excel。但这会使用一个非常慢的Excel实例。 - Shiplu Mokaddim
5个回答

13
你可以像RedFilter展示的那样使用Excel的交互操作,但是也有一些开源替代方案,不需要在你的计算机上安装Excel即可工作。如果你有一个部署在没有安装Excel的服务器上的asp.net项目,这可能很有用。
EPPlus是一个很好的库。http://epplus.codeplex.com/ 个人而言,我使用Koogra。http://sourceforge.net/projects/koogra/?_test=b

4
+1 为 EPPlus,我用它来创建和打开/读取文件,非常好用。 - Nick Bork
1
它适用于2007/2010文件,因此可能仅处理*.XLSX文件,但不支持XLS文件格式。无论如何,只要您不需要使用它们,这就可以了:)。 - Lukasz M
EPPlus看起来可能是我正在寻找的东西。谢谢,Amaranth! - ks78

3

如果Excel Viewer可以打开新的XML格式,我会非常高兴。但是它们似乎不受支持。 - ks78

1

你可以使用interop(如另一个答案中所述),但在服务器环境中官方不支持这种方法。

另一种解决方案是使用OpenXML SDK 2.0,它应该允许你创建XLSX文件。可以从这里下载:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5124。 如果你决定使用这个解决方案,我建议你也看看那里提供的OpenXML SDK 2.0 Productivity Tool


我已经查看了OpenXML,但它能生成一个“真正的”Excel文件吗?它似乎生成基于XML的文件,完整版本的Excel可以读取,但Excel Viewer不能。我错了吗? - ks78
我应该能够创建有效且真实的XLSX文件,这是Office 2007及更高版本使用的格式。虽然我还没有测试过,但它应该可以与2207(或更新版本)的Excel或Excel Viewer正确地工作。但是,它无法生成XLS文件(Office 2003及更早版本使用的格式)。 - Lukasz M
OpenXML是微软的XML文件格式。 - Murph
是的,但重要的是要提到*.XLSX是一种OpenXML文件:http://en.wikipedia.org/wiki/OpenXML。 - Lukasz M

1

ExcelViewer 的最新版本显然支持以下文件格式:

您只能打开 Excel 文件(.xlsx、.xlsm、.xlsb、.xltx、.xltm、.xls、.xlt、.xlm 和 .xlw)。即使您可以打开启用宏的文件(.xlsm、.xltm 和 .xlm),您也无法运行宏。

因此……XML 格式文件不是问题,因此适当的解决方案是编写 OpenXML 格式。不幸的是,这并不好玩……你可以做到,工具包让你反向工程一些东西,但代码很可怕。

所以,如果是我(而且确实是我,也将是我),我会看看 ClosedXML 生成 OpenXML 文档 - 这是我下一次使用的首选。

当然,还有一些商业选项-适用性取决于您的具体用例。

尽管如此,“正确”的答案是通过任何方式生成 OpenXML (.xlsx) 文档。


编辑:关于ExcelXMLWriter的引用是错误的-因为它是ExcelML,所以无法帮助


谢谢。我也可以尝试使用OpenXML。它生成的XML格式与“ExcelML”相同吗?Telerik也可以导出到该格式,但Excel Viewer无法打开它。 - ks78

1

Apache POI是一个流行且可靠的Java库,用于编写Excel文件。NPOI是另一个很好的选择(http://npoi.codeplex.com),用于使用.NET编写Excel文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接