以下是我的问题:如何以编程方式创建“真正的”Excel文件?
注意:我不是指CSV,HTML / CSS或XML文件,我的意思是使用Excel用于保存电子表格的相同格式的文件。
后台:我正在开发一个ASP.Net应用程序,其中包括Telerik的RadGrid。我们目前正在使用RadGrid的ExportToExcel()函数,但我们的一些客户需要能够使用Excel Viewer查看这些导出。 Telerik的函数导出一个基于HTML / CSS的文件,Excel的完整版本可以打开,但Excel Viewer不能。
我确信它可以以编程方式创建一个“真正的”Excel文件,但我不知道从哪里开始。是否有可以帮助我做到这一点的SDK?
任何建议将不胜感激。提前谢谢。
答案 0 :(得分:13)
您可以像使用RedFilter所展示的那样使用Excel中的互操作,但也有开源替代方案,不需要在您的电脑上安装Excel即可工作。如果您在没有Excel的服务器上部署了asp.net项目,那么它将非常有用。
EPPlus是一个很好的图书馆。 http://epplus.codeplex.com/
个人而言,我使用Koogra。 http://sourceforge.net/projects/koogra/?_test=b
答案 1 :(得分:1)
您可以从Microsoft获取Office File Formats规范,但二进制格式在某些地方非常复杂。你可能可以通过最小的实现来逃避。这是.xls binary file format spec。我建议使用Office 2007和2010使用的新XML格式 - 请参阅此WikiPedia article on the Office Open XML standard。
唯一想到的另一个选择是自动化Excel并让它生成文件。
答案 2 :(得分:1)
您可以使用互操作(如另一个答案中所述),但您在服务器环境中并未正式支持它。
另一种解决方案是使用 OpenXML SDK 2.0 ,这可以让您创建XLSX文件。它可以从这里下载:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5124。 如果您决定使用此解决方案,我建议您也可以查看 OpenXML SDK 2.0生产力工具 。
答案 3 :(得分:1)
最新版本的ExcelViewer显然支持以下文件格式:
您只能打开Excel文件(.xlsx,.xlsm,.xlsb,.xltx,.xltm, .xls,.xlt,.xlm和.xlw)。即使你可以打开宏启用 文件(.xlsm,.xltm和.xlm),您将无法运行宏。
所以...... XML格式文件不是问题 - 因此适当的解决方案是编写OpenXML格式。不幸的是,这不好玩......你可以做到,工具包可以让你反向工程,但代码很可怕。
所以,如果它是我(并且它已经存在并且将会存在),我会查看ClosedXML来生成OpenXML文档 - 它是我下一次列表的首选。
当然,还有许多商业选择 - 具体取决于您的具体用例。
尽管如此,“正确”的答案是以任何方式生成OpenXML(.xlsx)文档。
编辑:对ExcelXMLWriter的引用错误 - 这对ExcelML来说无济于事
答案 4 :(得分:1)
Apache POI是一个流行且可靠的Java库,用于编写Excel文件。 NPOI是用.NET编写Excel文件的另一个好选择(http://npoi.codeplex.com)。