999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于C++對Excel表格文檔操作研究的初探

2011-12-31 00:00:00李義彪
科教導刊 2011年24期

摘要本文通過研究,找到了C++對類似excel的高級文件的操作的途徑。它為我們今后進行C++訪問Office辦公文檔文件的研究提供了必要的方向。

關鍵詞 ODBC數據源 excel驅動 橋梁

中圖分類號:TP31 文獻標志碼:A

Operation Research of Excel Form Document based on C++

LI Yibiao

(School of Science and Technology Electronic Information,

Chengdu Agricultural Vocational College, Chengdu, Sichuan 611130)

AbstractThis paper found a operation way similar to C + + for advanced file excel by research. It provides the necessary direction for the research of C + + to access the office document files in future.

Key wordsODBC; data source; excel; drive; bridge

曾經,我們在C或者C++中通過構造類型創建一個通訊錄的記事本文本文件,這當然沒有問題。然而,這種記事本結構的文本文檔,畢竟是一種簡單的文件,在辦公文檔中,它是很少用的,一般我們都是通過建立excel結構的文檔作為通訊錄更加直觀、實用。而且excel還可以作為數據庫數據的形式為其他程序所共享和使用。所以,我們有必要探討一下如何通過C++創建、存取excel文件的原理和實現方法。

首先,我們必須搞清楚C++對excel表格文檔操作的實質或者原理。

很多人可能認為, 通過C++創建excel文件的創建很簡單,就直接利用C或者C++中間創建普通文件的方法就行了。其實,即使“表面上”創建好了excel文檔,當用Excel環境打開該excel時都會出現將文本導入到excel文檔的向導步驟。比如,下面的代碼

fp=fopen(\"c:\\\\人員通訊錄.xls\",\"w\");

fprintf(fp,\"\\姓名\性別\年齡\\");

for(i=0;i<3;i++)

{

scanf(\"%s\",perin[i].name);

scanf(\"%s\",perin[i].sex);

scanf(\"%s\",perin[i].telecode);fprintf(fp,\"\%s\%s\%s\\",perin[i].name,perin[i].sex,perin[i].telecode);

}

為此可以創建一個相應的excel文件,但是,當打開時該文件是,會出現如下對話框(見圖1)。

這足以說明,雖然生成的文件“貌似”excel文檔文件,但是真正打開時就出現了上面提示的“文本文件”情況,點擊“下一步”、“下一步”,“完成”之后才是如下界面(見圖2)。

很明顯,這些數據都是通過簡單的“文本文件”這種實質機理進行轉換到excel中去的,不是真正的excel類型結構的文件。而C或者C++沒有直接操作excel的方式,而是通過ODBC的方式進行的。

圖1

第一,確保在ODBC中安裝excel文件驅動\"Microsoft Excel Driver (*.xls)\";第二,C或者C++是通過ODBC(開放數據庫連接)進行操作excel文件的。所以,ODBC是C或者C++操作excel文件的中間橋梁。

其次,我們來研究下C++操作excel表格文檔的實現步驟。

圖2

(1)在ODBC中安裝excel驅動。

主要步驟:[控制面板]→[管理工具]→[數據源 (ODBC)] →[用戶DSN]選項卡→[添加] [ Microsoft Excel Driver (*.xls)]→ [完成]→[數據源名 手工輸入數據源名稱]→[確定]→[確定]

(2)修改頭文件StdAfx.h內容。

StdAfx是頭文件預編譯,沒有函數庫,只是定義了一些環境參數,使得編譯出來的程序能在32位的操作系統環境下運行。用VC6.0打開該文件,加入(包含)兩個重要的庫文件:

#include

#include

(3)C++通過ODBC向excel文檔中寫入數據。

假定我們創建的excel文件名是relationbook.xls, 然后,核心代碼如下:

CDatabase database;

CString sDriver=\"Microsoft Excel Driver(*.xls)\";

CString sExcelFile=\"c:\\\\relationbook.xls\";

CString sSql;

sSql.Format(\"DRIVER={%s};DSN='''';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\\\"%s\\\";DBQ=%s\",sDriver, sExcelFile, sExcelFile);

// 創建數據庫 (即Excel表格文件)

if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )

{

// 創建表結構(姓名、年齡)

sSql = \"CREATE TABLE relationbook (Name TEXT,Age NUMBER)\";

database.ExecuteSQL(sSql);

// 向剛建立的excel文件插入新數據

sSql = \"INSERT INTO relationbook (Name,Age) VALUES ('黃飛鴻',26)\";

……

database.ExecuteSQL(sSql);

}

以上即是完全展示了C++通過ODBC創建并且像剛創建的excel文件添加數據的過程,筆者可以認真組織這些代碼成為完整的程序模塊

(4)C++通過ODBC讀取excel文檔數據。

下面,我們給出核心實現代碼,并賦予必要的注釋

// 創建進行存取的字符串

sDsn.Format(\"ODBC;DRIVER={%s};DSN='';DBQ=%s\", sDriver, sFile);

// 打開數據庫(即Excel文件)

database.Open(NULL, 1, 1, sDsn);

CRecordset recset(database);

// 設置讀取的查詢語句。

sSql = \"SELECT Name, Age FROM relationbook ORDER BY Name \";

// 執行查詢語句,recset是記錄集

recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);

// 獲取查詢結果

while (!recset.IsEOF())

{

//讀取Excel內部數值,并且傳遞到Item1、Item2

recset.GetFieldValue(\"Name \", Item1);

recset.GetFieldValue(\"Age\", Item2);

// 移到下一行

recset.MoveNext();

}

// 關閉數據庫

database.Close();

以上即是完全展示了C++通過ODBC讀取excel文件數據并且將查詢結構返回給定義的變量的過程,這中間還涉及到獲取excel驅動的方法,需要好好體驗。

通過上面的探究,我們認識到,要使C++真正操作excel文檔,要通過ODBC這個中間橋梁,而ODBC幾乎是很多程序語言操作數據庫表文件的橋梁。正是因為引入了ODBC這個橋梁,使得C++操作excel文檔才從本質上得到了保證。

總之,用C++操作excel文檔文件,終于得到了可行的辦法,也許讀者還有更好的辦法,我在這里也是起到拋磚引玉的作用。通過這種探究的思路和方向,也以讓C++同訪問excel文檔一樣訪問office的其他文檔文件,相信大家潛心研究,會得到解決的。

參考文獻

[1]跟著實例學Visual C++ 6.0 訪問數據庫·繪圖·制表.北京航空航天大學出版社,2003.

[2]譚浩強編著.C++程序設計.清華大學出版社,2004.

主站蜘蛛池模板: 青青青视频91在线 | www.youjizz.com久久| 国精品91人妻无码一区二区三区| 99热这里只有免费国产精品| 国产成人区在线观看视频| 国产美女在线观看| www中文字幕在线观看| 国产成人精品男人的天堂下载| 四虎国产永久在线观看| 日韩小视频在线观看| 不卡视频国产| 国产综合亚洲欧洲区精品无码| 成人毛片免费在线观看| 亚洲男人的天堂网| 毛片在线区| 成人午夜视频在线| 久久永久视频| 99精品免费欧美成人小视频| 国产亚洲欧美在线中文bt天堂| 99久久亚洲精品影院| 亚洲h视频在线| 狠狠做深爱婷婷综合一区| 成人福利在线视频免费观看| 亚洲成人在线网| 啪啪永久免费av| 精品国产一二三区| 色屁屁一区二区三区视频国产| 国产玖玖玖精品视频| 亚洲成人www| 欧美日韩国产综合视频在线观看| jizz在线观看| 国产精品区网红主播在线观看| 欧美在线视频a| 58av国产精品| 91麻豆精品国产91久久久久| 午夜视频在线观看区二区| 91色综合综合热五月激情| 伊人天堂网| 日本不卡视频在线| 日韩天堂网| 2021国产精品自产拍在线观看| 九色综合视频网| 免费一看一级毛片| 国产成人精品男人的天堂| 午夜综合网| 亚洲视频在线网| 欧美一级大片在线观看| 一级毛片在线免费视频| 国产真实乱子伦精品视手机观看| 综合社区亚洲熟妇p| 四虎永久在线精品影院| 亚洲午夜久久久精品电影院| 欧美在线一二区| 国产无码高清视频不卡| 91青青视频| 亚洲网综合| 黄色网址手机国内免费在线观看| 国产精品美乳| 国产一区二区网站| 亚洲精品日产精品乱码不卡| 欧美激情成人网| 日韩成人免费网站| 欧美激情视频一区| 亚洲成人77777| 国产aaaaa一级毛片| 中国一级特黄大片在线观看| 久久91精品牛牛| 免费99精品国产自在现线| 91视频日本| 高h视频在线| 欧美精品亚洲精品日韩专| 亚洲品质国产精品无码| 久久久久国产一区二区| 国产在线精彩视频二区| 人人澡人人爽欧美一区| 午夜高清国产拍精品| julia中文字幕久久亚洲| 久久美女精品| 久久国产亚洲偷自| 欧美精品亚洲二区| 粉嫩国产白浆在线观看| 丁香六月激情综合|