利用ADO操作Excel檔案

2021-06-21 11:44:07 字數 2072 閱讀 6335

** :

使用adodb物件可以訪問和操作excel檔案 asp在asp中,使用adodb物件可以訪問和操作excel檔案。下面我們以乙個excel檔案匯入access為例子,簡要看看在asp中使用excel的方法。 

1、乙個.xls檔案可以看成乙個資料庫,其中的每乙個工作表(sheet)看成資料庫表。 

2、access雖然只是乙個桌面資料庫,但是它有關係型資料庫的驗證結構,excel則不然。ado以excel中**第一列的資料(行標題)為欄位名。 

3、欄位名不能夠包含數字. excel的驅動在遇到這種問題時就會出錯的。 

4、如果你的excel電子**中某一列同時包含了文字和數字的話,那麼excel的odbc驅動將不能夠正常, 處理這一行的資料型別,你必須要保證該列的資料型別一致。<--以上是從經典論壇找到的說明--> 

如下圖 我們看看乙個excle**常見的格式。

今天花時間研究了一下ado操作excel檔案的問題,跟大家分享一下:

首先利用excel2003建立了乙個名為demo.xls的檔案,內容如下:

name

agety 12

tzl15

然後開啟vc,建立乙個命令列應用程式。然後如一般的ado程式一樣編寫相應**,只是注意開啟資料庫的**如下寫:

m_pconnection->open("provider=microsoft.jet.oledb.4.0;data source=demo.xls;extended properties=/"excel 8.0;hdr=no;imex=1/"","","",admodeunknown);

注意一下hdr,如果後面是no的話,表示ado將不把你excel檔案的第一行作為欄位名(此時使用預設欄位名:f1,f2。。以此類推,當然也可以用(lpctstr)m_precordset->getfields()->getitem((_variant_t)zz)->name之類的**來獲得相應的欄位名)。否則如上excel檔案的欄位名將是name與age。另外是imex,如果設定了"imex=1;" 則通知驅動程式始終將「互混」(數字,日期,字串等)資料列作為文字讀取,同時這個選項有可能影響到excel**拒絕寫操作,也就是說,如果我們要求寫入excel的話,這個選項不能被設定。

接下來是開啟記錄集,**如下(注意一下表名的寫法):

m_precordset->open("select * from [sheet1$]",_variant_t((idispatch*)m_pconnection,true),adopendynamic,adlockoptimistic,adcmdunknown);

知道了欄位名,開啟了資料庫跟記錄集,隨後的操作就跟普通ado的操作一樣了:

讀取操作:

while(!m_precordset->adoeof)

插入操作:

m_precordset->addnew();

m_precordset->putcollect("name",_variant_t("zz"));

m_precordset->putcollect("age",_variant_t("23"));

m_precordset->update();

更新操作:

m_precordset->movefirst();

m_precordset->putcollect("name",_variant_t("zz"));

m_precordset->update();

刪除操作:

不支援!這也是感到很遺憾的地方。好在我們可以通過執行 update [sheet1$] set name=null, age=null where name='zz'  之類的sql語句來實現類似功能。當然,你要知道的是,這一行並沒有真正刪除掉,所以通常在select的時候要進行一定的篩選,例如:select * from [sheet1$] where name is not null;

其它注意事項:

如果通過執行sql語句的方法完成資料插入與更新操作,需要注意所有的字段,包括數字,都要按文本來處理,否則會報型別不正確的錯誤。

利用ADO操作Excel檔案

今天花時間研究了一下ado操作excel檔案的問題,跟大家分享一下 首先利用excel2003建立了乙個名為demo.xls的檔案,內容如下 name agety 12 tzl15 然後開啟vc,建立乙個命令列應用程式。然後如一般的ado程式一樣編寫相應 只是注意開啟資料庫的 如下寫 m pconn...

VC 利用ADO操作Excel

把excel當做資料庫來操作,步驟如下 1 在stdafx.h中加入 import c program files common files system ado msado15.dll no namespace rename eof adoeof connectionptr pcon ex cst...

C 通過ADO讀寫Excel檔案

有時候我們需要從excel 裡匯入 匯出資料。其中一種方式就是通過ado的方式。在這裡,excel檔案被當作資料庫來處理,該方式不需要客戶端安裝microsoft excel,速度也夠快。連線字串 這裡有兩種型別的連線字串,第一種是針對xls格式的 provider microsoft.jet.ol...