C++讀寫EXCEL檔案方式比較

來源:互聯網
上載者:User

因為有些朋友問代碼的問題,將OLE讀寫的代碼分享在這個地方,大家請自己看。 http://blog.csdn.net/fullsail/article/details/8449448

C++讀取Excel的XLS檔案的方法有很多,但是也許就是因為方法太多,大家在選擇的時候會很疑惑。

由於前兩天要做導表工具,比較了常用的方法,總結一下寫個短文,

 

1.OLE的方式

這個大約是最常用的方式,這個方式其實啟動了一個EXCEL的進程在背後讀寫EXCEL檔案,這個方式的最大好處是什麼事情都能做。包括設定EXCEL的格式,增加刪除Sheet,讀寫儲存格,等等。功能幾乎是最全的,而且使用起來也不是特別的難。

其基本方法都是使用匯出的.h檔案進行OLE操作,但是由於OLE的介面說明文檔不多,想非常完美的使用她們也不是太容易,好在例子也很多。

網上普遍認為OLE速度慢,EXCEL的OLE讀寫方式也基本一樣。但是讀取速度可以改進,如果在讀取的載入整個Sheet的Range的全部資料,而不是一個個儲存格讀取,那麼速度還是相對不錯。想想原理也很簡單,整體讀取減少了OLE的互動次數。OLE的寫入方式一般只能幾個進行比較方便,所以速度可能要快很多。

我自己的親身體會是,一個EXCEL檔案,100多列的欄位,如果採用一個個儲存格的讀取方式,1s大約3條左右的記錄,如果整體讀取,速度可以提高几十倍。

OLE讀寫EXCEL方式功能很強大,讀取速度還可以,但寫入速度不高,當然這個方式不可能移植的,而且你必須安裝了EXCEL。

 

2.Basic EXCEL 方式

這是CodeProject上的一個推薦開源工程了,

http://www.codeproject.com/KB/office/BasicExcel.aspx

作者是基於EXCEL的檔案格式進行的處理。但是為什麼叫Basic EXCEL呢。

他不支援很多東西,公式,檔案格式,表格合并等(有人說中文支援也不好),所以可以認為他只支援最基本的EXCEL表格,

我自己的嘗試是如果這個EXCEL檔案有其他元素(公式,格式等),使用Basic EXCEL讀取會失敗。

OLE讀寫EXCEL方式功能比較弱,由於是直接根據檔案格式操作,讀寫速度都不錯,你也不需要按照EXCEL,另外這個方式是可以移植的,但是有一些成本,其代碼比較晦澀難懂,而且沒有注釋,另外即使在Windows平台上,警示也很多。

 

 

3.Sourceforge 上的幾個EXCEL庫。

Sourceforge 上有幾個開源的的EXCEL庫,但是完善的不多,有的是為了PHP讀寫EXCEL準備的,包括libXLS,XLSlib,SmartEXCEL等。我下載了幾個實驗了一下,在Widonws都沒有編譯成功。也罷了。

 

4.ODBC的方式

這個親身沒有嘗試過,但是按照原理,應該只能讀寫。

速度嗎,ODBC的速度本來就是出名的慢了。

http://www.vckbase.com/document/viewdoc/?id=421

 

值得一提的是Basic EXCEL的作者原來在CodeProject上有一個給予ODBC方式的封裝CSpreadSheet 。如果有興趣,大家可以去看看。其實內心還是很佩服這個作者的。

http://www.codeproject.com/KB/database/cspreadsheet.aspx

 

5.ADO的方式

ADO的方式聽說應該就是使用OLEDB的方式。和OLE的方式應該沒有本質區別。我看了看例子也和OLE很像

 

 

6.LibXL

LibXL 是一個收費的EXCEL的庫。

http://www.libxl.com/

按照他的說明,他可以不依賴EXCEL讀取XLS檔案。包括設定格式等。看例子操作應該很簡單。但是是否可以移植到Linux平台,我估計難度也不小。呵呵。

由於要收費,沒有法子測試了。

 

7.網上一些號稱不用OLE讀取EXCEL例子

初步看了一下,這個應該是網上探索EXCEL格式文檔的例子。可以實際操作的方式不強。

 

 

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.