2011-07-19 13 views
0

目前,我們的應用程序將大型數據導出到Office 2003 xml電子表格格式的服務器中。 用戶可以下載xml文件。該文件可以很容易地在辦公室03和07中正確打開。 我想知道是否可以從服務器中的這個xml文件創建xls和xlsx格式並將它們提供給用戶?如何以編程方式在c#中生成Office 2003 xml電子表格中的xls&xlsx

[服務器沒有辦公室,也不會be.So互操作在這種情況下無用。]

======編輯=====

無法使用第三方解決方案...... :(

回答

0

如果我正確地理解你的問題,那麼你不僅僅是提供'純粹'的XML,而是由Excel解釋的SpreadsheetML就像一個普通的二進制格式的Excel文件。所以你的用戶已經有了一個很好的解決方案。你如何創建這些文件?我使用XSLT將我的XML數據轉換爲SpreadsheetML,它只是一種特定的XML格式。這樣我就可以在Excel中做任何可能的事情(格式化,公式等)。它不僅僅是將XML轉換爲CSV。

你爲什麼要改變這個?我可以看到由此產生的XML-Excel文件通常很龐大,原因是什麼?

現在,由於Excel 2007格式(xlsx)基本上是一些描述文件結構和數據的XML文件的zip存檔 - 只需將任何xlsx的文件擴展名重命名爲zip並在提取後檢查 - 您可能能夠調整現有的解決方案,即不是創建一個SpreadsheetML(XML)文件,而是將它們打包並壓縮成一個服務器。我假設你的普通服務器安裝應該有必要的工具。

但是 - 這種解決方案很難維護(正如您可能知道的那樣,您當前的解決方案 - 如果我沒事的話)以及XSLT中添加新功能的更改需要相當多的知識。所以我再次推薦Aspose.Cells,即使是一些有知識的用戶也可能能夠改變簡單的格式。

HTH 安德烈亞斯

+0

感謝您的解釋。 :) –

+0

這對於基於XML的格式 - .xlsx非常適用 - 但如果您需要生成.xls二進制格式,則不會對您有所幫助。 – abitgone

1

使用XML文件,您可以輕鬆使用XSLT將XML轉換爲CSV。但是,如果您確實需要使用本機Excel電子表格類型導出,那麼使用它可能是個好主意一個組件

我們以前用過的東西,我會推薦nd,是Aspose.Cells - 我們用它來生成Excel電子表格,其中普通的CSV輸出是不夠的(你確定它不會滿足你的情況 - XSLT將做短暫的工作)。

雖然它不是免費的,但無需在服務器上安裝Office(並避免使用Office自動化等),並且具有非常好的支持。

編輯以下意見
如果您不能使用第三方組件,如果你不能在服務器上安裝Office,你不能互操作使用,那麼 - 除非你想獲得舒適請閱讀微軟提供的Excel Binary File Format (.xls) Structure Specification - 答案非常短:不。

+0

XML是不是已經爲Microsoft Excel電子表格格式中定義純XML file.It。 –

+0

然後,根據您的其他意見,建議您不能在服務器上使用interop或安裝Office或使用第三方組件或軟件,我無法知道 - 您可以將Office XML格式(.xlsx )到他們的二進制文件中。我已經編輯了上面的答案來反映這一點。 – abitgone

0

如果您沒有office 2003 *或更高版本)引用該項目的DLL,恐怕您無法直接在您的程序中讀取Office XML數據,除非您可以手動解析整個XML通過研究其格式。

+0

我並不是在問關於閱讀。我已經根據微軟指定的格式生成了xml,需要將它保存爲xls/xlsx。 –

+0

啊,好的。在這種情況下,你可以按照Andrea的建議壓縮它。如果您的服務器上無法實現這一功能,恐怕唯一的解決方案就是從服務器向基於Windows的服務器上的Web服務發送請求。您可以在這個新的Web服務上創建Excel轉換邏輯。 –

相關問題