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

VC++讀寫Excel的接口和應(yīng)用研究

2016-03-28 23:32:20
關(guān)鍵詞:數(shù)據(jù)處理

肖 峰

(1.安徽大學(xué);2.安徽職業(yè)技術(shù)學(xué)院 學(xué)生處,安徽 合肥 230001)

?

VC++讀寫Excel的接口和應(yīng)用研究

肖峰1,2

(1.安徽大學(xué);2.安徽職業(yè)技術(shù)學(xué)院學(xué)生處,安徽合肥230001)

摘要:電子表格軟件Excel以其操作簡(jiǎn)單、功能強(qiáng)大,在社會(huì)中得到了廣泛的應(yīng)用.文章通過研究COM技術(shù),研究了EXCEL的接口函數(shù),借助面向?qū)ο缶幊坦ぞ遃C++,制作了功能齊全而強(qiáng)大的Excel文件操作類;使程序開發(fā)人員能夠?qū)⒆⒁饬杏谛枰鉀Q的問題,而不是如何操作Excel文件上.并結(jié)合實(shí)際教學(xué)工作中經(jīng)常遇到的學(xué)生成績(jī)統(tǒng)計(jì)為例,全面介紹了一個(gè)系統(tǒng)完整的實(shí)現(xiàn)過程,對(duì)數(shù)據(jù)報(bào)表的處理和更高級(jí)別的具體應(yīng)用具有一定的借鑒意義.

關(guān)鍵詞:VC++;Excel;COM;數(shù)據(jù)處理

1 引言

在當(dāng)前的程序設(shè)計(jì)中,不僅僅需要進(jìn)行繁雜的數(shù)學(xué)計(jì)算和邏輯處理,而且也需要對(duì)數(shù)據(jù)的輸入和輸出以報(bào)表或者表格的形式來存儲(chǔ).Visual C++作為比較常用的可視化開發(fā)工具,具有良好的計(jì)算處理、靈活的界面設(shè)計(jì)和多樣化的接口處理等功能,并且在代碼效率和執(zhí)行效率上有優(yōu)異的表現(xiàn).但是在對(duì)一些數(shù)據(jù)和報(bào)表的處理上,很難達(dá)到讓人非常滿意的效果.電子表格軟件Excel是office辦公軟件的重要成員.作為一種簡(jiǎn)單易用、功能強(qiáng)大的辦公軟件,在社會(huì)上得到越來越廣泛的應(yīng)用.所以,將VC++和Excel結(jié)合起來,在程序中實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出具有非常重要的價(jià)值.

文中程序均已經(jīng)在VC++2010下編譯通過,并能夠在Excel 2007下完成指定功能.

2 Excel對(duì)象模型和接口

COM(Component Object Model)技術(shù)是微軟公司提出的一種接口和應(yīng)用實(shí)現(xiàn)的規(guī)范.Excel就是一種基于COM技術(shù)的應(yīng)用程序,通過特定的接口可將其內(nèi)部對(duì)象開放給其他應(yīng)用程序,這樣外部程序就可以通過這些接口來實(shí)現(xiàn)對(duì)Excel中的對(duì)象模型進(jìn)行操作.

要通過COM技術(shù)對(duì)Excel對(duì)象進(jìn)行操作,必須與Excel對(duì)象模型提供的對(duì)象進(jìn)行交互,Excel的對(duì)象模型中有超過100個(gè)對(duì)象模型,程序設(shè)計(jì)中常用的對(duì)象有Application、Workbook、Worksheet、Range等:

Application:代表Excel,處于模型的最上層.

Workbook:指Excel中的工作簿,相當(dāng)于通常所說的Excel文件.需要注意的是,Workbook中包括Worksheet. Worksheet是Workbook中獨(dú)立的頁,可以有多個(gè),數(shù)據(jù)就保存在Worksheet中.

Worksheet:Worksheet中包括單元格(Cell).Worksheets是所有Worksheet對(duì)象的集合.

Range:Excel中基本的操作是通過對(duì)范圍(Range)對(duì)象進(jìn)行處理而實(shí)現(xiàn)的.Range是指一個(gè)或者多個(gè)連續(xù)的單元格區(qū)域.

一般來說,操作Excel對(duì)象的步驟如下:(1)建立Application對(duì)象.

(2)建立Workbooks對(duì)象.

(3)建立Workbook和Worksheet對(duì)象.

(4)通過調(diào)用Worksheet對(duì)象的方法和屬性操作文件中的詳細(xì)內(nèi)容.

(5)依次關(guān)閉Worksheet、Workbook、Workbook是和Application對(duì)象.

在使用Excel對(duì)象之前,必須插入一個(gè)Excel類,步驟如下:

(1)建立一個(gè)標(biāo)準(zhǔn)的基于MFC的工程.

(2)在工程名上點(diǎn)擊鼠標(biāo)右鍵,選擇”Add→Class”,在彈出的對(duì)話框中選擇”MFC Class From TypeLib”會(huì)彈出一個(gè)導(dǎo)入對(duì)話框.

(3)在”Available type libraries:”選擇框中選擇”Microsoft Excel 12.0 type Library<1.6>”,Interfaces列表框中會(huì)出現(xiàn)excel所有的對(duì)象模型.在列表框中的對(duì)象模型里選擇我們需要的類.

(4)進(jìn)入幾個(gè)剛生成的類頭文件中將”#import”開頭的這行注釋掉.

這樣我們就把Excel對(duì)象模型中的對(duì)象導(dǎo)入到VC++中了.

3 VC++操作Excel

為了在VC++實(shí)現(xiàn)方便快捷的操作Excel,我們可以對(duì)這些導(dǎo)入的Excel對(duì)象模型的方法和屬性進(jìn)一步的包裝和抽象,使其調(diào)用更加簡(jiǎn)單.

創(chuàng)建一個(gè)新的類CExcelLib,在這個(gè)類中實(shí)現(xiàn)Excel的所有操作.CExcelLib類直接調(diào)用Excel內(nèi)部函數(shù),完成讀取、寫入、保存和設(shè)置格式等操作.

3.1初始化Excel對(duì)象

在這里我們可以在類CExcelLib的構(gòu)造函數(shù)中創(chuàng)建Excel.Application對(duì)象,如果創(chuàng)建成功,則使用已經(jīng)完成初始化的Application對(duì)象m_Excel創(chuàng)建工作簿組對(duì)象并將其關(guān)聯(lián)到類成員變量m_bojBooks.

3.2打開和創(chuàng)建Excel文件

通過文件名在已經(jīng)完成初始化的Workbooks對(duì)象打開對(duì)應(yīng)的工作簿(Workbook)并將其關(guān)聯(lián)到成員變量m_Book.

m_Book=m_Books.Open(szFileName, vt, vt, vt,vt, vt, vt, vt, vt,vt, vt, vt, vt, vt, vt);

如果是創(chuàng)建一個(gè)新文件則使用如下的方法.通過加載excel空白模板的方式,創(chuàng)建一個(gè)excel文件,默認(rèn)的文件名是Book1.

m_Book = m_Books.Add(vt);

經(jīng)初始化成功的workbook對(duì)象獲取表單對(duì)象集(Worksheets)并將之關(guān)聯(lián)到一個(gè)Worksheets變量上,通過枚舉的方式查找和指定表單名匹配的worksheet,并將它關(guān)聯(lián)到成員變量m_Sheet.

如果是創(chuàng)建一個(gè)新表單,可以采用如下的代碼來創(chuàng)建一個(gè)指定名字的新表單.

Worksheets objSheets = m_Book.GetWorksheets();

m_Sheet = objSheets.Add(vt,vt,vt,vt);

m_Sheet.SetName(szSheetName);

這步完成后,我們已經(jīng)把一個(gè)excel文件操作所需要的對(duì)象均已構(gòu)建、關(guān)聯(lián)完畢.

3.3單元格操作

(1)合并/解除合并單元格

合并單元格是Excel經(jīng)常用到的操作,輸入?yún)?shù)有四個(gè),前兩個(gè)參數(shù)是開始位置單元格的行號(hào)和列號(hào),后兩個(gè)參數(shù)是結(jié)束單元格的行號(hào)和列號(hào).

Range objRange=m_Sheet.GetRange (Variant (rc2a1 (ROW1,COL1)), OleVariant(rc2a1(ROW2, COL2)));

objRange.Merge(vt);

除合并單元格的方法和合并單元格的方法類似.

(2)填寫單元格內(nèi)容

把預(yù)先定義的值填寫到指定的某一單元格中.因?yàn)閰?shù)中傳入的值僅支持字符串類型的值,需要我們事先把其他類型的值轉(zhuǎn)為字符串形式,然后再填寫到指定的單元格中.

m_Range.SetItem(Variant(lRow), Variant(lCol), Variant (szText));

用類似的方法可以讀取表單中指定單元格的內(nèi)容. (3)設(shè)置背景色

設(shè)置指定的一個(gè)單元格或者多個(gè)單元格的背景色.

Range objRange=m_Sheet.GetRange (Variant (rc2a1 (ROW1, COL1)),Variant(rc2a1(ROW2,COL2)));

((Interior)objRange.GetInterior ()).SetColor (_variant_t ((long)Color));

(4)設(shè)置對(duì)齊方式

設(shè)置指定單元格的對(duì)齊方式,可以同時(shí)指定單個(gè)或者多個(gè)單元格.同時(shí)對(duì)單元格的水平和垂直對(duì)齊方式進(jìn)行設(shè)定.如果水平或者垂直對(duì)齊方式的輸入值是0,則認(rèn)為是不對(duì)此方向上的對(duì)齊方式作出新的設(shè)定.水平對(duì)齊常用的值有:1默認(rèn)對(duì)齊方式,-4108居中對(duì)齊,-4131左對(duì)齊,-4152右對(duì)齊.垂直對(duì)齊常用的值有:2默認(rèn)對(duì)齊方式,-4108居中對(duì)齊,-4160左對(duì)齊,-4107右對(duì)齊.

關(guān)于單元格的操作還有很多,比如設(shè)置字體的大小、顏色,設(shè)置行高、列寬以及在指定的單元格設(shè)置邊框等等,這里不再一一詳細(xì)描述.

3.4保存和退出

當(dāng)把Excel的內(nèi)容編輯完成之后,保存的時(shí)候傳入指定的文件路徑,調(diào)用SaveAs功能把整個(gè)文件保存到電腦上.

Excel在退出的時(shí)候必須按照指定的順序釋放對(duì)象:

m_Range.ReleaseDispatch();

m_Sheet.ReleaseDispatch();

m_Book.ReleaseDispatch();

m_Books.ReleaseDispatch();

delete m_Excel;

4 應(yīng)用實(shí)例

下面以教學(xué)工作中經(jīng)常能遇到的學(xué)生考試成績(jī)統(tǒng)計(jì)為例來說明如何使用VC++來操作Excel文件.

(1)假設(shè)學(xué)生信息數(shù)據(jù)庫存儲(chǔ)著學(xué)生姓名、學(xué)號(hào)、班級(jí)、科目、考試分?jǐn)?shù)等信息,也可以從相關(guān)聯(lián)的數(shù)據(jù)庫中查到授課老師的信息,我們可以把這些信息都導(dǎo)出到Excel文件中.

(2)執(zhí)行導(dǎo)出操作將數(shù)據(jù)到Excel文件.

假設(shè)我們已經(jīng)定義CExcelLib的成員變量實(shí)例.并且已經(jīng)關(guān)聯(lián)到本地空白的excel文件,然后把從數(shù)據(jù)庫中得到的信息寫入excel文件中.

先創(chuàng)建一個(gè)Excel對(duì)象和三個(gè)工作表,分別是數(shù)學(xué)、英語和網(wǎng)絡(luò),并且把數(shù)學(xué)表單激活作為當(dāng)前的工作表單.并且對(duì)表頭進(jìn)行簡(jiǎn)單的設(shè)置.

假設(shè)已經(jīng)獲取數(shù)據(jù)庫連接對(duì)象,對(duì)數(shù)據(jù)庫中的學(xué)生學(xué)號(hào)、姓名、成績(jī)進(jìn)行讀取,并對(duì)成績(jī)進(jìn)行判斷,如果60分以上為及格,否則不及格.

這些操作完成后,整個(gè)輸出過程全部完成.

通過上面的代碼把指定某個(gè)班級(jí)全部學(xué)生數(shù)學(xué)這門課程的考試分?jǐn)?shù)信息全部輸出到Excel文件.使用類似的操作可以把英語和網(wǎng)絡(luò)的成績(jī)統(tǒng)計(jì)輸出到Excel文件中.

當(dāng)這些操作全部完成后,調(diào)用保存函數(shù)把當(dāng)前文件保存為指定的文件名.

(3)數(shù)據(jù)輸入

當(dāng)Excel文件作為外部數(shù)據(jù)輸入源,需要把文件中的大批量的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫時(shí),使用程序設(shè)計(jì)也可以使這一過程大大方便和簡(jiǎn)化.

基本的處理過程是使用類CExcelLib把數(shù)據(jù)逐條讀出來,經(jīng)過一定的處理后把這些數(shù)據(jù)通過數(shù)據(jù)連接寫入數(shù)據(jù)庫,直到Excel文件中的數(shù)據(jù)被全部讀完.這樣所有的數(shù)據(jù)就都被保存到數(shù)據(jù)庫了.

5 結(jié)束語

本文使用VC++實(shí)現(xiàn)操作Excel文件,并把具體的操作方法封裝為一個(gè)類,并應(yīng)用此類完成學(xué)校考試成績(jī)統(tǒng)計(jì)的運(yùn)算處理工作.Excel是一種功能強(qiáng)大、界面友好的電子表格工具軟件,當(dāng)用戶處理的數(shù)據(jù)量不是特別大的時(shí)候,使用Excel會(huì)使工作變得更簡(jiǎn)單;但隨著數(shù)據(jù)量的增大,特別是處理大批量重復(fù)性數(shù)據(jù)時(shí),就會(huì)顯得效率比較低下.因此,使用程序設(shè)計(jì)來完成這種工作具有實(shí)用性和必要性.

參考文獻(xiàn):

〔1〕郝建,張紅瑞,呂延崗.VC++和Excel對(duì)象接口的研究與應(yīng)用[J].石家莊鐵道學(xué)院學(xué)報(bào)(自然科學(xué)版),2009,22(4): 75-78.

〔2〕杜詩雨,王子源.Visual C++操作Excel的應(yīng)用研究[J].計(jì)算機(jī)與現(xiàn)代化,2011(8):201-203.

〔3〕王文會(huì),陳靜,嚴(yán)翠玲.VC++中用Excel實(shí)現(xiàn)數(shù)據(jù)庫表的導(dǎo)入與導(dǎo)出[J].河北工業(yè)科技,2008,25(6):382-385.

〔4〕潘愛民.COM原理與應(yīng)用[M].北京:清華大學(xué)出版社,1999.

〔5〕潘愛民,等譯.Visual C++技術(shù)內(nèi)幕(第4版)[M].北京:清華大學(xué)出版社,2004.

收稿日期:2015年10月19日

中圖分類號(hào):TP317.3

文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1673-260X(2016)02-0016-02

猜你喜歡
數(shù)據(jù)處理
驗(yàn)證動(dòng)量守恒定律實(shí)驗(yàn)數(shù)據(jù)處理初探
認(rèn)知診斷缺失數(shù)據(jù)處理方法的比較:零替換、多重插補(bǔ)與極大似然估計(jì)法*
ILWT-EEMD數(shù)據(jù)處理的ELM滾動(dòng)軸承故障診斷
ADS-B數(shù)據(jù)處理中心的設(shè)計(jì)與實(shí)現(xiàn)
MATLAB在化學(xué)工程與工藝實(shí)驗(yàn)數(shù)據(jù)處理中的應(yīng)用
基于希爾伯特- 黃變換的去噪法在外測(cè)數(shù)據(jù)處理中的應(yīng)用
大數(shù)據(jù)處理中基于熱感知的能源冷卻技術(shù)
Matlab在密立根油滴實(shí)驗(yàn)數(shù)據(jù)處理中的應(yīng)用
數(shù)據(jù)處理能力在求職中起關(guān)鍵作用
我國首個(gè)“突發(fā)事件基礎(chǔ)數(shù)據(jù)處理標(biāo)準(zhǔn)”發(fā)布
主站蜘蛛池模板: 国产一级毛片网站| 四虎国产成人免费观看| 亚洲成年网站在线观看| 无码中字出轨中文人妻中文中| 日韩午夜片| 女人18毛片一级毛片在线| 亚洲精品片911| 久草网视频在线| 免费毛片网站在线观看| 欧美成在线视频| 国产乱视频网站| 免费无码AV片在线观看国产| 久久婷婷色综合老司机| 久久成人18免费| 欧美有码在线观看| 久久精品娱乐亚洲领先| 欧美国产日韩另类| 精品久久香蕉国产线看观看gif| 99视频在线看| 韩国v欧美v亚洲v日本v| 婷婷午夜影院| 国产真实乱子伦精品视手机观看| 99九九成人免费视频精品| 99久久国产自偷自偷免费一区| 无码一区18禁| 极品av一区二区| 日韩不卡免费视频| 99re精彩视频| 97se亚洲综合不卡| a级毛片免费播放| 亚洲成人一区二区三区| 久久无码高潮喷水| 亚洲日韩在线满18点击进入| 欧美在线伊人| 国产中文在线亚洲精品官网| 天天干天天色综合网| 九九线精品视频在线观看| 尤物成AV人片在线观看| 自偷自拍三级全三级视频| 国产色婷婷| 国产精品亚洲天堂| 国产毛片高清一级国语| 欧美国产综合色视频| 国产成人久视频免费| 精品福利网| 国产免费a级片| 国产成人精品亚洲77美色| 一级一级特黄女人精品毛片| 亚洲欧美在线精品一区二区| 亚洲日韩AV无码精品| 亚洲黄色高清| 日本AⅤ精品一区二区三区日| 福利视频一区| 91精品小视频| 欧洲一区二区三区无码| 蜜臀AVWWW国产天堂| 日韩精品一区二区三区免费| 欧美亚洲欧美| lhav亚洲精品| 成人看片欧美一区二区| 亚洲第一成年人网站| 无码日韩视频| 亚洲天堂网站在线| 丁香六月激情综合| 国产精品短篇二区| 黄色网站在线观看无码| 欧美亚洲日韩不卡在线在线观看| 国产91在线|日本| 欧美日韩第三页| av无码一区二区三区在线| 国模沟沟一区二区三区| 一级成人欧美一区在线观看| 欧洲日本亚洲中文字幕| 亚洲无码电影| 国产99久久亚洲综合精品西瓜tv| 国产福利不卡视频| 制服丝袜在线视频香蕉| 精品乱码久久久久久久| 五月六月伊人狠狠丁香网| 国产精品香蕉在线| 精品久久蜜桃| 香蕉色综合|