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.

主站蜘蛛池模板: 国产福利影院在线观看| 国产无遮挡裸体免费视频| 在线亚洲天堂| 亚洲天堂.com| 4虎影视国产在线观看精品| 国产无人区一区二区三区| 日韩精品免费在线视频| 高清国产在线| 亚洲国产欧美中日韩成人综合视频| 中国国产一级毛片| 午夜电影在线观看国产1区| 亚洲精品免费网站| 99久视频| 国产爽妇精品| 思思99热精品在线| 中文字幕亚洲另类天堂| 免费人成视网站在线不卡| 国产黑人在线| 一区二区欧美日韩高清免费| 久久精品人人做人人爽电影蜜月| 国产本道久久一区二区三区| 青青热久麻豆精品视频在线观看| 国产成人一区二区| 国产精品 欧美激情 在线播放| 国产人成乱码视频免费观看| 亚洲欧美在线看片AI| 欧美性久久久久| 国模视频一区二区| 99精品视频九九精品| 99视频在线免费| 亚洲精品福利视频| 日韩av无码精品专区| 国产成人亚洲无吗淙合青草| AV天堂资源福利在线观看| 999国产精品永久免费视频精品久久 | 国产精欧美一区二区三区| 国产福利免费视频| 国产毛片基地| 99在线视频免费| 超碰精品无码一区二区| 国产第一页第二页| 国产黄网永久免费| 91久久大香线蕉| 午夜精品久久久久久久2023| 久久夜色精品国产嚕嚕亚洲av| 亚洲国产看片基地久久1024| av在线无码浏览| 91成人在线免费观看| 欧美成人国产| 久久五月天综合| 日韩毛片免费观看| 亚洲一区网站| 国产精品无码AV中文| 国产欧美日韩视频一区二区三区| 国产精品林美惠子在线观看| 高清码无在线看| 亚洲一区二区约美女探花| 中文无码影院| 亚洲天堂日韩在线| 免费av一区二区三区在线| 91福利在线看| a天堂视频在线| 精品人妻无码中字系列| 91精品国产福利| 免费毛片网站在线观看| 手机在线免费不卡一区二| 国产不卡一级毛片视频| 国产一级α片| V一区无码内射国产| 国产成人调教在线视频| 中文字幕在线观看日本| 亚洲国产成人超福利久久精品| 一级毛片免费高清视频| 亚洲无码高清免费视频亚洲| 国产99精品久久| 一级成人a毛片免费播放| 狠狠色噜噜狠狠狠狠色综合久| 久操中文在线| 国产三级a| 人妻丰满熟妇AV无码区| 日本午夜在线视频| 中文字幕天无码久久精品视频免费|