电子表格ML文件转换为开放式XML(XLSX)的Excel转换

5

一个简单的问题。有没有人知道一种将SpreadsheetML(Excel 2003 XML)转换为用于Excel 2007(xlsx)文件的Open Document XML的简便方法?

我有一个不幸不能读取XML格式的库,所以我需要尝试找到一种读取数据的方法,而不涉及另一个库。

任何建议都将不胜感激。


更多信息。我不能使用Interop的原因是这可能是一个服务器进程,而Interop不起作用。我目前使用的库是一种解决方法,但仅支持XLS和XLSX文件。最近我有一个新的要求,需要与另一个函数配合使用,该函数生成适用于Excel 2003的XML。然而,该库不支持此功能,因此我正在尝试找到一种解决方法。 - Ian
6个回答

2
如果您有充裕的资金,Aspose.Cells 可以读写这两种格式,并且应该可以提供非常简单的转换方式,而无需自动化。

http://www.aspose.com/categories/.net-components/aspose.cells-for-.net/default.aspx

Aspose.Cells for .NET是一款屡获殊荣的电子表格组件,允许.NET开发人员将读取、写入和操作Excel电子表格的能力嵌入到他们自己的应用程序中,而无需依赖于Microsoft Excel。Aspose.Cells for .NET是一个成熟、可扩展和功能丰富的组件,提供了许多超出其他供应商简单数据导出能力的功能。使用Aspose.Cells for .NET,开发人员可以导出数据,将电子表格格式化到最细致的级别,导入图像、导入图表、创建图表、应用和计算复杂的公式、流式传输Excel数据、以各种格式保存等等,所有这些都不需要使用Microsoft Excel或Microsoft Office Automation。

价格从每个企业(内部)开发者899美元起步,并呈陡增趋势。


+1 因为实际上Aspose可以完成这项工作,并且实际上在第一次就可以避免这个问题。不过最终,我编写了自己的解析器,使用我们已经购买的API重新构建了电子表格。 - Ian

1

一个简单的方法是使用Excel的COM库(Excel 2007),但我认为这不是你想要的答案。

你的库有什么能力?你可以使用Open XML SDK 2.0根据你的库的输出编写电子表格文档。

最好的祝福


刚刚检查了一下,但不幸的是,我们目前必须构建针对 .NET 2.0 的应用程序。 - Ian

1

文件格式从SpreadsheetML到Office Open XML确实发生了很大的变化。

而且,由于现在电子表格文件被分成多个XML文件(然后全部压缩),因此没有真正的简单XLST解决方案。

不幸的是,最直接的做法是使用宏自动化Excel,打开每个SpreadsheetML文件并执行“另存为”到新格式。这可以在Office 2003中使用Office 2007文件格式插件来完成。也许这可以委派给批处理过程,使服务器不直接参与?

如果电子表格中的数据是琐碎的并遵循一致的格式,您可以编写自己的解析器,直接从SpreadsheetML文件中导入。


我们可能需要手动完成它们,并根据自动化程度对用户施加一定的限制。谢谢。 - Ian

1

尝试使用JODConverter。 JODConverter允许使用OpenOffice.org或Libreoffice引擎转换SpreadsheetML。


0
检查一下这段代码:static void XlsToXlsx
static void XlsToXlsx (string sourceFile, string destinationFile)
{
    Type officeType = Type.GetTypeFromProgID("Excel.Application");

    Excel.Application app = new Excel.Application();
    app.DisplayAlerts = false;
    // Open Excel Workbook for conversion.
    Excel.Workbook excelWorkbook = app.Workbooks.Open(sourceFile);
    // Save file as CSV file.
    //excelWorkbook.SaveAs(destinationFile, Excel.XlFileFormat.xlCSV);
    excelWorkbook.SaveAs(destinationFile, Excel.XlFileFormat.xlOpenXMLWorkbook);
    // Close the Workbook.
    excelWorkbook.Close();
    // Quit Excel Application.
    app.Quit();
}

我可以在哪里输入这个宏定义? - oligofren

0
据我所知,Office 2003格式的工作方式类似于OpenDocument格式:它是一个带有XML文件的ZIP文件,因此(如果你有足够的时间/勇气),你可以打开它,找到包含数据的XML文件,最终处理XML。

我知道,这个答案是给勇敢的开发者的;)

祝好。


2
然而,XLSX压缩文件中的XML似乎与Excel 2003 XML格式中的XML有相当大的不同。 - Ian
我很抱歉,这是微软的“特性”,但你在那里填补空缺 ;) - ATorras
是的,WordprocessingML != OpenXML。 - BrainSlugs83

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接