2009-01-13 88 views
7

我正在尋找一個庫,它允許我以編程方式修改Excel文件以將數據添加到某些單元格。我目前的想法是使用命名範圍來確定插入新數據的位置(基本上是1x1的範圍),然後更新命名範圍以指向數據。這個將要整合的現有應用程序完全是用C++編寫的,所以我理想的是尋找一個C++解決方案(因此this thread的用處有限)。如果一切都失敗了,如果有某種方式將它與我們的C++應用程序連接起來,我將使用.NET解決方案。以編程方式修改Excel電子表格的最佳方式

一個理想的解決方案是開源的,但迄今爲止我見過的(MyXlsXLSSTREAM)都沒有看到這個挑戰。我喜歡Aspose.Cells的外觀,但是它適用於.NET或Java,而不是C++(並且花費不菲)。我需要支持從97到現在的所有Excel格式,包括XLSX和XLSB格式。理想情況下,它也支持OpenOffice等格式,以及(用於輸出)PDF和HTML格式。

一些使用情況我需要支持:

  • 讀取和修改電子表格中的任意單元格,包括公式
  • 創建,讀取,修改命名區域(範圍本身,而不僅僅是細胞)
  • 將格式從一個單元格複製到一堆其他格式(包括條件格式) - 我們將使用一個單元格作爲我們填入數據的所有其他單元格的模板。

任何幫助你可以給我找到合適的圖書館將是偉大的。我也希望聽到一些關於各種建議(包括我的帖子中的建議)的推薦,以便我可以做出更明智的決定 - 容易使用,無錯誤,便宜等等?

回答

0

我結束了使用Aspose.Cells,正如我在我的原始文章中提到的,因爲它似乎是最簡單的路徑。我對它的結果非常滿意,他們的支持非常好。我不得不在C#中創建一個包裝器,它將COM接口導出到我的C++應用程序中。

3

最安全的建議就是使用OLE。它使用COM,它根本不需要.NET。

http://en.wikipedia.org/wiki/OLE_Automation < - 大約一半是C++的例子。

您可能必須將幾個功能包裝到可用性函數中,但使用起來並不難看。

編輯:只要知道你需要一個Excel的副本,它的工作。另外,還有一些第一方的.h文件,您可以找到針對excel的文件。 (這一切都在維基百科文章中解釋過)

0

您是否已經嘗試過使用Excel COM接口?顯然Excel需要安裝在機器上,並且處理時很痛苦...

0

我會爭論一個.net解決方案與COM互操作鏈接到您的C++應用程序是最好的解決方案。在與他們合作的十多年中,我從來沒有見過Excel的COM自動化,它不會在某處泄漏內存。

如果您需要自動化Excel,我推薦Visual Studio Tools for Office。如果您不需要自動化,只需修改文件,並且這些文件可以採用Office 2007格式,那麼最好找到一個直接操作文件而不是打開Excel來執行操作的庫。

1

將處理您的要求,並有一個非常類似於Excel的API。

當您插入單元格時,您定義的名稱(以及任何其他公式/圖表等)將自動修正以引用新範圍(就像在Excel中一樣)。所以你不需要更新你定義的名字(儘管如果你想要這樣做,完全支持創建和更新定義的名字)。

SpreadsheetGear是一個.NET組件,但是您可以構建自己的包裝器,它可以從C++調用。

您可以see what our customers say並下載免費,功能齊全的評價here

相關問題