C++讀寫EXCEL檔案方式比較
因為有些朋友問程式碼的問題,將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上的一個推薦開源工程了,
作者是基於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的速度本來就是出名的慢了。
值得一提的是Basic EXCEL的作者原來在CodeProject上有一個給予ODBC方式的封裝CSpreadSheet 。如果有興趣,大家可以去看看。其實內心還是很佩服這個作者的。
5.ADO的方式
ADO的方式聽說應該就是使用OLEDB的方式。和OLE的方式應該沒有本質區別。我看了看例子也和OLE很像
6.LibXL
LibXL 是一個收費的EXCEL的庫。
按照他的說明,他可以不依賴EXCEL讀取XLS檔案。包括設定格式等。看例子操作應該很簡單。但是是否可以移植到Linux平臺,我估計難度也不小。呵呵。
由於要收費,沒有法子測試了。
7.網上一些號稱不用OLE讀取EXCEL例子
初步看了一下,這個應該是網上探索EXCEL格式文件的例子。可以實際操作的方式不強。
==============================================================================================================================
2015年1月更新一下
其實目前看來,可以使用的庫比原來多了不少。
第一。
LibXL 目前國內用的人不少。當然他其實沒有免費,只是……你在CSDN也能找到了。
其實作者買的也不算太貴了。
第二。
基於QT的程式碼。
https://github.com/dbzhang800/QtXlsxWriter
這個庫可以讀取XLSX的格式。其實是這個格式目前也開源了。
當然前提是你用QT,這個工程量優點浩大。
第三,
xlslib,這個庫可以讀取寫入xls格式的
http://sourceforge.net/projects/xlslib/?source=navbar
如果你是用.NET,你就太幸福了。可選的多了取了。
http://blog.wwery.cn/?p=210
什麼你想把.NET的庫轉換為C++可以使用?這個……希望你能成功。
相關推薦
C++讀寫EXCEL檔案方式比較
因為有些朋友問程式碼的問題,將OLE讀寫的程式碼分享在這個地方,大家請自己看。 http://blog.csdn.net/fullsail/article/details/8449448 C++讀取Excel的XLS檔案的方法有很多,但是也許就是因為方法太多,大家在選
c++讀寫Excel檔案
#include <fstream> #include <string> #include <iostream> #include <sstrea
C++讀寫excel檔案(三)—— 用OLE讀寫
轉自http://blog.csdn.net/yukin_xue/article/details/11209283 參考博文: http://blog.csdn.net/rekrad/article/details/7666196http://blog.csdn.net/
C#讀寫Excel表格文件NPOI方式無需安裝office .xls後綴沒問題
key 表頭 調試 成功 c++ exc reat 搜索 neu /// <summary> /// 讀Excel /// </summary> /// <param name="fileN
C#讀寫EXCEL(OLEDB方式)
用OLEDB方式讀取EXCEL的速度是非常快的。但是當Excel資料量很大時。會非常佔用記憶體,當記憶體不夠時會丟擲記憶體溢位的異常。 OLEDB方式將Excel作為一個數據源,直接用Sql語句操作資料,並且不需要安裝Office Excel就可以使用。但缺點
(轉)用Python讀寫Excel檔案&&幾種模組比較
關於初始化 Excel的com介面的具體細節我就不介紹了,需要的話直接查閱相關的MSDN文件即可。這裡只提幾個特殊的小問題。 要想得到一個可以操作的excel物件,一般可以有兩種方式: import win32com.client excel = win32com.client.Dispatch('Ex
C# 讀寫文字檔案並匯入Excel(一)
一、本程式的主要思想 利用ReadAllText和WriteAllText方法讀寫文字檔案,並且把他們以逗號分隔,形成能被Excel直接匯入並且分列的資料。 二、程式的執行結果 執行前,必須在相應目錄建立文字檔案,方便程式的讀寫。程式執行前的資料如圖: 程
C# WPF 利用NPOI讀寫Excel檔案。
關於C#讀寫Excel檔案的方法,在網上查來查去大致有三種 1.利用Microsoft.Office.Interop.Excel提供的API進行讀寫,由於相容性比較差等原因,本人搞了半天之後放棄了。 2.利用OpenXML庫進行讀寫,由於感
C#技巧【呼叫執行緒無法訪問此物件,因為另一個執行緒擁有該物件的問題的解決辦法】【C#讀寫EXCEL原始碼提示“office檢測到此檔案存在一個問題。為幫助保護您的計算機,不能開啟此檔案”的解決】
SYD8801是一款低功耗高效能藍芽低功耗SOC,集成了高效能2.4GHz射頻收發機、32位ARM Cortex-M0處理器、128kB Flash儲存器、以及豐富的數字介面。SYD8801片上集成了Balun無需阻抗匹配網路、高效率DCDC降壓轉換器,適合用於可穿戴、物聯網
C# WPF 讀寫Excel檔案
關於C#讀寫Excel檔案的方法,在網上查來查去大致有三種 1.利用Microsoft.Office.Interop.Excel提供的API進行讀寫,由於相容性比較差等原因,本人搞了半天之後放棄了。 2.利用OpenXML庫進行讀寫,由於感覺很麻煩,
(C/C++)(讀/寫)(二進位制檔案/文字檔案)
C++寫二進位制檔案 std::ofstream fout("a.dat", std::ios::binary); int nNum = 20; std::string str("Hello, world"); fout.wr
C++讀寫XML檔案(libxml2庫)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
C++讀寫XML檔案(使用tinyxml庫)
使用以下程式碼之前,需要下載TinyXml庫,幷包含到工程下 #include <stdio.h> #include "tinyxml.h" #include <iostream> #include <cstring> usin
C#讀寫txt檔案的兩種方法介紹
1.新增名稱空間 System.IO; System.Text; 2.檔案的讀取 (1).使用FileStream類進行檔案的讀取,並將它轉換成char陣列,然後輸出。 byte[] byData = new byte[100]; c
使用原生php讀寫excel檔案
原文地址:https://www.cnblogs.com/wujuntian/p/6696592.html 方法1:直接在js程式碼中使用window.open()開啟php介面的url,即可將php生成的excel檔案下載下來。 $mysqli = mysqli_connect('
python學習筆記之讀寫excel檔案
python 處理excel資料的兩種方式: 首選pandas庫裡pandas.read_excel函式,相對比較簡單 其次使用xlrd庫,感覺沒有pandas好用 如何寫excel,後續更新 #coding=utf-8 """ Created on
python xlrd,xlwt 讀寫excel檔案
python 讀excel檔案,需要xlrd庫。下載地址:https://pypi.python.org/pypi/xlrd python 寫excel檔案,需要xlwt庫。下載地址:https://pypi.python.org/pypi/xlwt/1.1.2 下載後修改副檔名為rar,
Python進階之讀寫Excel檔案
讀寫Excel檔案是日常工作中常用的功能,學會編寫簡單的Excel資料處理工具,可以從重複性的Excel編輯工作中解脫出來,本文描述了Window環境下如何讀寫Excel檔案。 讀寫Excel用到了xlrd、xlwt、xluntils和pyExceler
支援各種特殊字元的 CSV 解析類 (.net 實現)(C#讀寫CSV檔案)
CSV是一種十分簡潔的資料結構,在DOTNET平臺實際使用中發現微軟官方並沒有提供預設的方法,而網上好多例子發現實現並不嚴謹甚至一些含有明顯錯誤,所以後面自己實現了一個讀寫工具類,這裡發出來希望方便後面朋友(難免還是會有考慮不到的地方,可隨時郵件聯絡) 使用該工具可對csv檔案進行讀寫(甚至不用去了解CSV的
WINCE C#讀寫INI檔案
最近開發一個CE上的GPS程式,用到配置儲存,由於資料比較少且資料結構簡單,所以採用了INI格式,WINCE沒有提供windows裡讀寫ini的函式,就自己寫了一個,程式碼如下(C#): ///////////////////////////////////////