【问题标题】:How to generate xls & xlsx from office 2003 xml spreadsheet programatically in c#如何在 C# 中以编程方式从 Office 2003 xml 电子表格生成 xls 和 xlsx
【发布时间】:2011-10-08 09:14:40
【问题描述】:

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

[服务器没有办公室,也不会。所以在这种情况下互操作是无用的。]

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

不能使用第三方解决方案... :(

【问题讨论】:

    标签: c# asp.net excel


    【解决方案1】:

    如果我正确理解了您的问题,那么您提供的不仅仅是“纯”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 安德烈亚斯

    【讨论】:

    • 感谢您的解释。 :)
    • 这对于基于 XML 的格式 - .xlsx 非常有效 - 但如果您需要生成 .xls 二进制格式,则无济于事。
    【解决方案2】:

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

    我推荐我们过去使用的东西是Aspose.Cells——我们已经用它来生成 Excel 电子表格,其中纯 CSV 输出是不够的(你确定它在你的情况——XSLT 可以解决这个问题)。

    虽然它不是免费的,但它可以省去在服务器上安装 Office(并避免使用 Office 自动化等)并且提供非常好的支持。

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

    【讨论】:

    • xml 不是纯 xml 文件。它已经为 microsoft excel 电子表格格式定义。
    • 那么,根据您的其他 cmets 建议您不能在服务器上使用互操作或安装 Office 或使用第三方组件或软件,我知道,您无法转换将 Office XML 格式 (.xlsx) 转换为对应的二进制文件。我在上面编辑了我的答案以反映这一点。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 我不是问阅读。我已经按照microsoft指定的格式生成了xml,需要保存为xls/xlsx。
      • 啊,好的。在这种情况下,您可以按照 Andrea 的建议对其进行 .zip 压缩。如果这在您的服务器上是不可能的,那么恐怕唯一的解决方案是将请求从您的服务器发送到基于 Windows 的服务器上的 Web 服务。您可以在这个新的网络服务上创建 Excel 转换逻辑。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多