亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇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以其操作簡單、功能強(qiáng)大,在社會(huì)中得到了廣泛的應(yīng)用.文章通過研究COM技術(shù),研究了EXCEL的接口函數(shù),借助面向?qū)ο缶幊坦ぞ遃C++,制作了功能齊全而強(qiáng)大的Excel文件操作類;使程序開發(fā)人員能夠?qū)⒆⒁饬杏谛枰鉀Q的問題,而不是如何操作Excel文件上.并結(jié)合實(shí)際教學(xué)工作中經(jīng)常遇到的學(xué)生成績統(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辦公軟件的重要成員.作為一種簡單易用、功能強(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)用更加簡單.

        創(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é)生考試成績統(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)行簡單的設(shè)置.

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

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

        通過上面的代碼把指定某個(gè)班級(jí)全部學(xué)生數(shù)學(xué)這門課程的考試分?jǐn)?shù)信息全部輸出到Excel文件.使用類似的操作可以把英語和網(wǎng)絡(luò)的成績統(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ì)也可以使這一過程大大方便和簡化.

        基本的處理過程是使用類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é)??荚嚦煽兘y(tǒng)計(jì)的運(yùn)算處理工作.Excel是一種功能強(qiáng)大、界面友好的電子表格工具軟件,當(dāng)用戶處理的數(shù)據(jù)量不是特別大的時(shí)候,使用Excel會(huì)使工作變得更簡單;但隨著數(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ù)處理
        認(rèn)知診斷缺失數(shù)據(jù)處理方法的比較:零替換、多重插補(bǔ)與極大似然估計(jì)法*
        ILWT-EEMD數(shù)據(jù)處理的ELM滾動(dòng)軸承故障診斷
        MATLAB在化學(xué)工程與工藝實(shí)驗(yàn)數(shù)據(jù)處理中的應(yīng)用
        Matlab在密立根油滴實(shí)驗(yàn)數(shù)據(jù)處理中的應(yīng)用
        基于POS AV610與PPP的車輛導(dǎo)航數(shù)據(jù)處理
        依托陸態(tài)網(wǎng)的GNSS遠(yuǎn)程數(shù)據(jù)處理軟件開發(fā)
        国产xxxx99真实实拍| 最新系列国产专区|亚洲国产| 久久久久免费看成人影片| 国产亚洲午夜高清国产拍精品| 久久久精品2019免费观看| 91av国产视频| 大肉大捧一进一出好爽视频mba| 国产精品香蕉在线观看| 无码国产精品一区二区免费网曝| 亚洲日韩成人无码不卡网站| 白色白色在线视频播放平台| 久久精品熟女亚洲av麻豆永永 | 欧美巨鞭大战丰满少妇| 国产免费内射又粗又爽密桃视频| 免费a级毛片无码a∨免费软件| 欧美精品一区视频| 亚洲伦理一区二区三区| 日韩中文字幕一区二十| 少妇高潮精品在线观看| 精品国产免费一区二区三区| 精品久久久久久久久久中文字幕| 麻豆国产乱人伦精品一区二区| 亚洲素人日韩av中文字幕| 亚洲精品一区二区三区四区久久| 女人无遮挡裸交性做爰| 97无码免费人妻超级碰碰夜夜| 亚洲精品中文字幕无乱码麻豆| 97中文字幕一区二区| 少妇无套裸按摩呻吟无呜| 国产又色又爽又黄的| 日日摸夜夜添无码无码av| 国产精品午夜波多野结衣性色| 在线观看免费视频发布白白色| 日韩中文字幕在线观看一区| 九九久久自然熟的香蕉图片| 两个人看的www中文在线观看| 亚洲九九夜夜| 国产少妇露脸精品自拍网站| 色婷婷色丁香久久婷婷| 蜜桃av抽搐高潮一区二区| 国产高级黄区18勿进一区二区|