郭玉樂(lè) 內(nèi)蒙古科技大學(xué)信息工程學(xué)院和內(nèi)蒙古包鋼鋼聯(lián)股份有限公司煉鐵廠
劉丕亮 內(nèi)蒙古科技大學(xué)信息工程學(xué)院
利用C++ Builder實(shí)現(xiàn)Excel數(shù)據(jù)及圖表生成
郭玉樂(lè) 內(nèi)蒙古科技大學(xué)信息工程學(xué)院和內(nèi)蒙古包鋼鋼聯(lián)股份有限公司煉鐵廠
劉丕亮 內(nèi)蒙古科技大學(xué)信息工程學(xué)院
Microsoft Office中的Excel是一款實(shí)用性很強(qiáng)的表格處理軟件,可以方便快捷的進(jìn)行數(shù)據(jù)計(jì)算、處理,而它的圖表功能,也可以直觀的反映數(shù)據(jù)情況。在C++ Builder的開(kāi)發(fā)環(huán)境中,可以利用OLE實(shí)現(xiàn)Excel數(shù)據(jù)及圖表的自動(dòng)生成,使得生成高爐生產(chǎn)日?qǐng)?bào)更加及時(shí)、數(shù)據(jù)更加準(zhǔn)確、直觀,并且提高了工作效率。本文對(duì)C++ Builder實(shí)現(xiàn)Excel的數(shù)據(jù)導(dǎo)出、頁(yè)面設(shè)置、圖表生成等過(guò)程進(jìn)行了詳細(xì)的介紹。
C++ Builder Excel OLE 圖表
煉鐵廠高爐每天要手工填寫紙質(zhì)生產(chǎn)班報(bào),再把數(shù)據(jù)錄入到生產(chǎn)程序中。這樣,容易導(dǎo)致數(shù)據(jù)在抄寫錄入過(guò)程中出現(xiàn)誤差、不一致,并且崗位職工的勞動(dòng)強(qiáng)度比較大。
隨著煉鐵廠信息化水平的逐步提升,要求高爐班報(bào)電子化,便于信息快速傳遞、數(shù)據(jù)資源共享。煉鐵廠常用開(kāi)發(fā)工具是C++ Builder,C++ Builder環(huán)境中提供了QReport組件可以完成簡(jiǎn)單的報(bào)表設(shè)計(jì)功能。由于高爐班報(bào)數(shù)據(jù)量大,結(jié)構(gòu)復(fù)雜,用程序直接生成、打印報(bào)表實(shí)現(xiàn)起來(lái)比較困難。Excel不僅可以實(shí)現(xiàn)復(fù)雜報(bào)表,并且有強(qiáng)大的數(shù)據(jù)統(tǒng)計(jì)分析功能,但是Excel數(shù)據(jù)不便于存儲(chǔ)和靈活查詢。鑒于以上原因,決定利用現(xiàn)有生產(chǎn)管理系統(tǒng)數(shù)據(jù)自動(dòng)生成Excel班報(bào)。
2.1 Excel的自動(dòng)啟動(dòng)
為了方便與Office套件進(jìn)行數(shù)據(jù)共享,C++ Builder中定義了一些OLE對(duì)象來(lái)完成此操作,對(duì)于Excel是Excel.Application對(duì)象,用這種方法對(duì)Excel文件進(jìn)行操作,必須要借助Excel. Application對(duì)象的屬性和方法來(lái)進(jìn)行。
創(chuàng)建應(yīng)用對(duì)象:
程序首先建立Excel.Application對(duì)象,再將其與指定的Excel文件關(guān)聯(lián),并打開(kāi)文件,再獲得工作薄對(duì)象,據(jù)此選中所需的工作表作為當(dāng)前工作表,此后即可讀取與寫入指定的單元格的內(nèi)容。除對(duì)數(shù)據(jù)操作外,Excel.Application對(duì)象的方法還可對(duì)字體、顏色、工作表名、表格格式等進(jìn)行設(shè)置。
2.2 向Excel導(dǎo)出數(shù)據(jù)
連接存儲(chǔ)過(guò)程,傳遞參數(shù)。實(shí)現(xiàn)數(shù)據(jù)查詢,并輸出到Excel中:
3.1 圖表類型
圖表類型分為標(biāo)準(zhǔn)類型和自定義類型,在此著重介紹折線圖的相關(guān)知識(shí)。折線圖共有8種樣式。選擇圖表類型的語(yǔ)法形式為:
3.2 圖表設(shè)置
xlRows表示數(shù)據(jù)是以列來(lái)做排列,xlColumns表示用行來(lái)做排列。如果是xlRows,選擇范圍的第一列就是X軸數(shù)據(jù)的名稱,第一行是Y軸數(shù)據(jù)的名稱,其余的作為圖表里的數(shù)值。
3.3 實(shí)現(xiàn)方法
3.3.1 利用OLE實(shí)現(xiàn)Excel數(shù)據(jù)及圖表的自動(dòng)生成
設(shè)置圖標(biāo)類型,這里設(shè)置的為折線圖
Chart.OlePropertySet("ChartType",4);
3.3.2 生成高爐班報(bào)展示(圖1)
圖1 高爐班報(bào)
[1]薩師煊.數(shù)據(jù)庫(kù)系統(tǒng)概論[M].北京:高等教育出版社,清華大學(xué)出版社,2005
[2]Kent Reisdorph,等.C++ Builder4技術(shù)內(nèi)幕[M].徐新華,譯.人民郵電出版社,2000:411-453
[3]杜希國(guó),利用C++ Builder實(shí)現(xiàn)Excel個(gè)性化頁(yè)面設(shè)置[J].電腦編程技巧與維護(hù),2011,(3):29-31
[4]于洪章.在C++ Builder中用OLE實(shí)現(xiàn)Excel的存取與共享[J].福建電腦,2008,(2):169-170
[5]云舟工作室.中文版Excel2000VBA一冊(cè)通.北京:人民郵電出版社,2000:277-291