Excel将SpreadsheetML转换为Open XML(XLSX)

时间:2009-08-25 16:04:18

标签: c# xml excel

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

我有一个库,遗憾的是它没有读取XML格式,所以我需要尝试找到一种方法来读取数据,这不涉及另一个库。

任何建议表示赞赏。

6 个答案:

答案 0 :(得分:2)

如果你有大笔资金Aspose.Cells可以读/写这两种格式,并且应该提供非常简单的转换,而不是自动化。

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

  

Aspose.Cells for .NET

     

Aspose.Cells for .NET是一个屡获殊荣的Spreadsheet组件,它允许.NET开发人员将Excel电子表格的读取,编写和操作功能嵌入到他们自己的应用程序中,而无需依赖Microsoft Excel。

     

Aspose.Cells for .NET是一个成熟,可扩展且功能丰富的组件,它提供的功能远远超出了其他供应商的简单数据导出功能。使用Aspose.Cells for .NET,开发人员可以导出数据,将电子表格格式化为最精细的级别,导入图像,导入图表,创建图表,应用和计算复杂公式,流式传输Excel数据,以各种格式保存等等 - 所有这一切都没有需要使用Microsoft Excel或Microsoft Office Automation。

每个开发人员的企业(内部)开发定价为899美元,并且从那里开始非常陡峭。

答案 1 :(得分:1)

一种简单的方法是使用Excel的COM库(Excel 2007),但我认为这不是您正在寻找的答案。

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

最好的问候

答案 2 :(得分:1)

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

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

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

如果电子表格中的数据非常简单且遵循一致的格式,您可以编写自己的解析器直接从SpreadsheetML文件导入。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

IIRC Office 2003格式就像OpenDocument格式一样:它是一个内置XML文件的ZIP文件,所以(如果你有足够的时间/勇气)你可以打开它,找到包含数据的XML文件,最后处理XML

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

问候。

答案 5 :(得分: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();
}