簡單的問題。有誰知道一種簡單的方法將SpreadsheetML(Excel 2003 XML)轉換爲用於Excel 2007(xlsx)文件的Open Document XML嗎?Excel將SpreadsheetML轉換爲開放XML(XLSX)
我有一個圖書館,不幸的是不讀取XML格式,所以我需要嘗試找到一種方法來讀取數據,這不涉及另一個庫。
任何建議表示讚賞。
簡單的問題。有誰知道一種簡單的方法將SpreadsheetML(Excel 2003 XML)轉換爲用於Excel 2007(xlsx)文件的Open Document XML嗎?Excel將SpreadsheetML轉換爲開放XML(XLSX)
我有一個圖書館,不幸的是不讀取XML格式,所以我需要嘗試找到一種方法來讀取數據,這不涉及另一個庫。
任何建議表示讚賞。
文件格式確實發生了顯着變化,從SpreadsheetML到Office Open XML。
而且,由於現在電子表格文件被分解成多個XML文件(這些文件都被壓縮),所以沒有真正希望有一個簡單的XLST解決方案。
不幸的是,最直接的操作過程是使用宏自動化Excel來打開每個SpreadsheetML文件並執行「另存爲」到新的格式。這可以在帶有Office 2007文件格式插件的Office 2003中完成。也許這可以降級到批處理,所以服務器不直接涉及?
如果電子表格中的數據不重要並遵循一致的格式,則可以編寫自己的分析器以直接從SpreadsheetML文件導入。
認爲我們可能必須手動完成這些操作,並且根據用戶是否自動執行某些限制而對用戶進行限制。謝謝 – Ian 2009-09-01 11:00:14
一個簡單的方法是使用Excel的COM庫(Excel 2007),但我認爲這不是您正在尋找的答案。
你的圖書館能夠做什麼?您可以使用Open XML SDK 2.0根據庫的輸出編寫電子表格文檔。
問候
只檢查了一下,但不幸的是,因爲我們目前必須針對.NET 2.0構建 – Ian 2009-08-25 16:21:27
IIRC了Office 2003格式的工作原理是OpenDocument格式:它是裏面的XML文件的ZIP文件,所以(如果你有足夠的時間/勇氣),你可以打開它,找到包含XML文件數據並最終處理XML。
我知道,這個答案是勇敢的開發商;)
問候。
但是,XLSX zip文件中的XML看起來與Excel 2003 XML格式中的XML有很大不同。 – Ian 2009-08-25 16:20:10
恐怕這是M $球員的「功能」,但你可以填補空白;) – ATorras 2009-08-25 16:32:26
是的,WordprocessingML!= OpenXML。 – BrainSlugs83 2013-06-13 04:16:35
如果你有很多口袋Aspose.Cells可以讀/寫這兩種格式,並且應該提供非常容易的轉換而不需要自動化。
http://www.aspose.com/categories/.net-components/aspose.cells-for-.net/default.aspx
的Aspose.Cells爲.NET
的Aspose.Cells爲.NET是一個屢獲殊榮的電子表格組件,它允許.NET開發者嵌入到閱讀能力,寫作和操作Excel電子表格到他們自己的應用程序中,而不需要依賴Microsoft Excel。
Aspose.Cells for .NET是一個成熟的,可擴展的,功能豐富的組件,它提供了許多超出其他供應商的簡單數據導出功能的功能。使用Aspose.Cells for .NET開發人員可以導出數據,將電子表格格式化爲最精細的級別,導入圖像,導入圖表,創建圖表,應用和計算複雜公式,保存各種格式的Excel數據等等 - 所有這些需要使用Microsoft Excel或Microsoft Office Automation。
對於企業(內部)開發,每個開發人員的起步價格爲899美元,並且從那裏開始非常陡峭。
+1,因爲確實Aspose能夠完成這項工作,而且實際上首先會繞過這個問題。最後,儘管我編寫了我自己的解析器來使用我們已經購買的API重新構建電子表格。 – Ian 2011-01-25 09:00:27
嘗試使用JODConverter。 JODConverter允許使用OpenOffice.org或Libreoffice引擎來轉換SpreadsheetML。
看起來像一個被遺棄的項目? – BrainSlugs83 2013-06-13 04:17:31
檢查這個代碼靜態無效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();
}
位的詳細信息。我不能/不能使用Interop的原因是因爲這可能是Interop不起作用的服務器進程。我目前使用的庫是一種解決方法,但僅支持XLS和XLSX文件。 我最近有一個新的需求需要與另一個函數一起工作,它產生適用於Excel 2003的XML。但是這不會/不會被庫支持,所以我試圖找到一種方法在這附近。 – Ian 2009-08-25 16:19:19