如何生成xls和;来自office 2003 xml电子表格的xlsx以编程方式在c#中

时间:2011-07-19 09:49:09

标签: c# asp.net excel spreadsheet

目前我们的应用程序在服务器中将大数据导出为office 2003 xml电子表格格式。 用户可以下载xml文件。该文件可以在office 03和07中正确打开。 我想知道是否可以从服务器中的这个xml文件创建xls和xlsx格式并将它们提供给用户?

[服务器没有办公室,也没有办公室。在这种情况下,互操作没用。]

======编辑=====

无法使用第三方解决方案...... :(

4 个答案:

答案 0 :(得分:1)

使用XML文件,您可以轻松使用XSLT将XML转换为CSV。但是,如果您确实需要在本机Excel电子表格类型中导出,那么使用组件可能是个好主意。

我们过去曾经使用过的东西,我建议Aspose.Cells - 我们用这个来生成Excel电子表格,其中普通的CSV输出是不够的(你确定它不会在你的情况下足够 - XSLT将做的很短的工作)。

虽然它不是免费的,但它可以节省在服务器上安装Office(并避免使用Office Automation等)并且得到很好的支持。

编辑以下评论
如果你不能使用第三方组件,如果你不能在服务器上安装Office,并且你不能使用互操作,那么 - 除非你想要舒服并阅读微软提供的Excel Binary File Format (.xls) Structure Specification - 答案非常简短:没有。

答案 1 :(得分:0)

如果你没有office 2003 *或更高版本)引用该项目的DLL,我恐怕你不能直接在你的程序中读取那个Office XML数据,除非你当然可以通过手动解析整个XML研究它的格式。

答案 2 :(得分:0)

您可以使用Open XML SDK创建或读取xlsx文件。 http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5124

答案 3 :(得分:0)

如果我理解你的问题,你不只是提供'纯'XML,而是由Excel解释为二进制格式的普通Excel文件的SpreadsheetML。所以你的用户已经有了一个非常好的解决方案你是如何创建这些文件的?我使用XSLT将我的XML数据转换为SpreadsheetML,这只是一种特定的XML格式。通过这种方式,我可以在Excel中执行任何可能的操作(格式化,公式等)。它不仅仅是将XML转换为CSV。

你为什么要改变这个?我可以看到生成的XML-Excel文件通常很大,是什么原因?

现在,由于Excel 2007格式(xlsx)基本上是描述文件结构和数据的一些XML文件的zip存档 - 只需将任何xlsx的文件扩展名重命名为zip并在解压后检查 - - 您可能能够调整现有的解决方案,即不创建一个SpreadsheetML-(XML)文件创建多个并将其打包/压缩到服务器。我假设你的正常服务器安装应该有必要的工具。

但是 - 这个解决方案难以维护(正如您可能知道的那样,当前的解决方案 - 如果我没事的话)并且XSLT中的更改以添加新功能需要相当多的知识。所以我也可以推荐Aspose.Cells,甚至一些知识渊博的用户也许可以改变简单的格式。

HTH 安德烈亚斯