C# 如何生成xls&;c语言编程的Office2003 xml电子表格中的xlsx#

C# 如何生成xls&;c语言编程的Office2003 xml电子表格中的xlsx#,c#,asp.net,excel,C#,Asp.net,Excel,目前,我们的应用程序正在服务器中将大数据导出为office 2003 xml电子表格格式。 用户可以下载xml文件。该文件可以在office 03和07中轻松地正确打开。 我想知道是否有可能从服务器中的这个xml文件创建xls和xlsx格式,并将它们提供给用户 [服务器没有office,也不会有。因此,在这种情况下,互操作是无用的。] =======编辑===== 无法使用第三方解决方案…:(对于XML文件,您可以轻松地使用XSLT将XML转换为CSV。但是,如果您确实需要以原生Excel电子表

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

[服务器没有office,也不会有。因此,在这种情况下,互操作是无用的。]

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


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

对于XML文件,您可以轻松地使用XSLT将XML转换为CSV。但是,如果您确实需要以原生Excel电子表格类型导出,则最好使用组件

我建议,我们在过去使用的东西是——我们使用它来生成Excel电子表格,其中纯CSV输出是不够的(您确定它在您的情况下是不够的吗?XSLT将很快实现这一点)

虽然它不是免费的,但它省去了在服务器上安装Office的麻烦(并避免使用Office自动化等),并且有很好的支持

编辑了以下评论:

如果您不能使用第三方组件,如果您不能在服务器上安装Office,并且您不能使用interop,那么-除非您想舒适地阅读Microsoft提供的文档-答案非常简短:不。

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

您可以使用Open XML SDK创建或读取xlsx文件。

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

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

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

但是,这个解决方案很难维护(如果我没问题的话,您可能知道当前的解决方案是什么),并且XSLT中添加新功能的更改需要相当多的知识。所以我同样可以推荐Aspose.Cells,即使是一些知识渊博的用户也可以更改简单的格式


Andreas

我不是在问阅读。我已经根据microsoft指定的格式生成了xml,需要将其保存为xls/xlsx.Ah,好的。那样的话,你可以按照安德里亚的建议把拉链拉上。如果在您的服务器上甚至不可能做到这一点,那么恐怕唯一的解决方案就是从您的服务器向基于windows的服务器上的web服务发送请求。您可以在此新的web服务上创建Excel转换逻辑。xml不是纯xml文件。它已为microsoft Excel电子表格格式定义。然后,根据您的其他评论,建议您不能在服务器上使用interop或安装Office,也不能使用第三方组件或软件,我知道,您无法将Office XML格式(.xlsx)转换为二进制格式。我编辑了上面的答案以反映这一点。感谢您的解释。:)这对于基于XML的格式--.xlsx非常有效,但如果需要生成.xls二进制格式,则对您没有帮助。