8

可能重复:
在 ASP.NET 中生成 Excel 文件

这是我的问题:您如何以编程方式创建“真正的”Excel 文件?

注意:我不是指 CSV、HTML/CSS 或 XML 文件,我指的是以 Excel 用于保存电子表格的相同格式编写的文件。

背景:我正在开发一个 ASP.Net 应用程序,其中包括 Telerik 的 RadGrid。我们目前正在使用 RadGrid 的 ExportToExcel() 函数,但我们的一些客户需要能够使用 Excel 查看器查看这些导出。Telerik 的函数导出一个基于 HTML/CSS 的文件,完整版的 Excel 可以打开,但 Excel Viewer 不能。

我确信以编程方式创建一个“真正的”Excel 文件是可能的,但我不确定从哪里开始。是否有可以帮助我做到这一点的 SDK?

任何建议,将不胜感激。提前致谢。

4

5 回答 5

13

您可以使用 Excel 中的互操作,就像 RedFilter 向您展示的那样,但也有一些开源替代方案,不需要在您的 PC 上安装 Excel 即可工作。如果您在没有 Excel 的服务器上部署了一个 asp.net 项目,它会很有用。

EPPlus 是一个很好的库。http://epplus.codeplex.com/

就个人而言,我使用 Koogra。http://sourceforge.net/projects/koogra/?_test=b

于 2012-04-05T20:29:01.493 回答
2

您可以从 Microsoft 获得Office 文件格式规范,但二进制格式在某些地方非常复杂。不过,您可能可以通过最小的实现而侥幸逃脱。这是.xls 二进制文件格式规范。我建议使用 Office 2007 和 2010 使用的新 XML 格式 - 请参阅有关 Office Open XML 标准的这篇 WikiPedia 文章

想到的唯一其他选择是自动化 Excel 并让它生成文件。

于 2012-04-05T20:26:38.330 回答
1

您可以使用互操作(如另一个答案中所述),但您在服务器环境中不受官方支持。

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

于 2012-04-05T20:27:37.320 回答
1

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

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

所以... XML 格式文件不是问题 - 因此适当的解决方案是编写 OpenXML 格式。不幸的是,这并不好玩……你可以做到,该工具包可以让你对东西进行逆向工程,但代码很糟糕。

所以,如果是我(过去和将来都会),我会查看ClosedXML以生成 OpenXML 文档——它是我下次列表的顶部。

当然,也有许多商业选择 - 适合的程度取决于您的具体用例。

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


编辑:对:ExcelXMLWriter的引用是错误的 - 这将无济于事,因为它的 ExcelML

于 2012-04-05T20:56:01.000 回答
1

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

于 2012-04-06T00:40:48.117 回答