2009-11-09 82 views
7

我需要通過C#創建一個excel文件。我已經閱讀了一些創建XML文檔的地方是最簡單的方法嗎?我需要有多個命名標籤,並能夠指定特定的單元格是文本,日期時間,數字等...任何建議或良好的例子?使用C編譯Excel文件#

回答

7

您需要System.IO.Packaging API - 這將讓你按Inserting Values into Excel 2007 Cells中所述生成.xlsx文檔。 Excel 2003格式也可用於安裝了免費Microsoft Office Compatibility Pack的Excel 2003和XP。

+0

@wcoenen -nice編輯,謝謝。 – Murph 2009-11-10 08:45:15

+0

有沒有任何如何用'System.IO.Packaging'建立Excel的例子?我無法找到處理Excel的文檔中的任何內容。 – 2012-10-18 14:11:02

+0

@IanBoyd有一個更好的方法(現在)去看看ClosedXML - 你可以在這裏找到:http://closedxml.codeplex.com/ – Murph 2012-10-18 15:08:30

1

你可以再檢查一下這個link

spreadsheetgear

CarlosAg Excel Xml Writer Library

+0

CarlosAg庫很好,但有一定的侷限性,被System.IO有效地取代。包裝 – Murph 2009-11-09 22:25:50

+0

以及電子表格如何? – 2009-11-09 22:27:40

+0

@astander - Spreadsheetgear有點不自由,因此不是我調查過的東西。 – Murph 2009-11-10 08:47:43

0

我們使用一個名爲Aspose工作套件。它有一個大的全功能「細胞」組件,爲我們創造奇蹟。

2

這是令人沮喪很難做到,因爲微軟的推薦機制,包括使用辦公室,這在桌面上很好,但對網絡無用。

.xls文件的二進制格式是禮,所以微軟推出了Office 2007中

.xslx.xlsx OpenXML文件的是所謂簡單 - 它只是一個ZIP容器充滿XML文件。您可以使用System.IO.Packaging打開它並使用System.Xml進行編輯。甚至還有一個適用於舊版Office的兼容包。

不幸的是,它只是不簡單 - .xslx的格式是horrible beyond words

看起來他們已經採用了16位優化的二進制.xls格式(最初爲Windows 3.1設計),並將其序列化爲XML而不是二進制。然後,他們添加了非常愚蠢的更改,如單元格註釋實際上是VML - 這種格式應該與IE5一起丟棄!他們還在XML中添加了大量的幻數和元數據,因此您無法對其使用任何類型的轉換,因此您需要手動解析該吸盤。

最後他們讓它成爲一個完整的驢來調試,我們經常發現.xslx文件,兼容性包報告爲損壞(沒有理由),但最新版本的Office可以打開罰款。

這裏有一個非常不錯的開源庫:SpreadsheetLight。這是一個非常好的圖書館,但是任何需要你自己挖掘和擴展文件的東西都會很痛苦。