楊俊濤,李霆,孫全和
(五邑大學(xué) 機(jī)械工程學(xué)院,廣東 江門(mén) 529020)
LabVIEW中基于ActiveX的復(fù)雜Word報(bào)表定制
楊俊濤,李霆,孫全和
(五邑大學(xué) 機(jī)械工程學(xué)院,廣東 江門(mén) 529020)
為了生成復(fù)雜且不規(guī)則的測(cè)試報(bào)表,比較了LabVIEW生成報(bào)表的幾種方法,提出利用ActiveX自動(dòng)化技術(shù)生成Word報(bào)表.通過(guò)創(chuàng)建“屬性節(jié)點(diǎn)”和“調(diào)用節(jié)點(diǎn)”的方法,自建“光標(biāo)移動(dòng)文本寫(xiě)入”子VI函數(shù)節(jié)點(diǎn),實(shí)現(xiàn)了在word報(bào)表中光標(biāo)的靈活移動(dòng)和文本、圖片的隨意寫(xiě)入.
LabVIEW;ActiveX控件;Word報(bào)表
使用LabVIEW時(shí),經(jīng)常需要把測(cè)試條件、測(cè)試結(jié)果、各類(lèi)圖表等大量的測(cè)試數(shù)據(jù)同時(shí)匯總在一份報(bào)表中,以便于查詢和對(duì)比.LabVIEW軟件本身具有報(bào)表導(dǎo)出子VI,但它只能生成一些簡(jiǎn)單的報(bào)表,如需把上述各類(lèi)測(cè)試數(shù)據(jù)整合在一份報(bào)表內(nèi),步驟繁瑣且所生成的報(bào)表不美觀,難以滿足復(fù)雜報(bào)表的需求[1].ActiveX 是微軟公司定義的用于Internet的一種對(duì)象鏈接與嵌入技術(shù),通過(guò)ActiveX自動(dòng)化服務(wù)器程序,能夠?qū)α硪粋€(gè)應(yīng)用程序中的對(duì)象進(jìn)行操作[2].由于LabVIEW支持對(duì)ActiveX的調(diào)用,因此可利用ActiveX生成Word報(bào)表.文獻(xiàn)[3]詳細(xì)敘述了利用ActiveX生成Word報(bào)表的優(yōu)勢(shì),并簡(jiǎn)要說(shuō)明了文本、表格、圖片插入的方法.文獻(xiàn)[4]對(duì)生成Word報(bào)表的3種方法進(jìn)行了分析探討,并利用ActiveX技術(shù)在表格內(nèi)寫(xiě)入測(cè)試數(shù)據(jù).在LabVIEW中利用ActiveX生成Word報(bào)表已有系列研究,但對(duì)于在復(fù)雜不規(guī)則的模板內(nèi)生成完整的Word報(bào)表的研究還比較少,尤其是在模板內(nèi)隨意寫(xiě)入大量的測(cè)試數(shù)據(jù).對(duì)此,本文通過(guò)創(chuàng)建一個(gè)光標(biāo)移動(dòng)文本寫(xiě)入子VI,以實(shí)現(xiàn)光標(biāo)的靈活移動(dòng)和文本、圖片的隨意寫(xiě)入,進(jìn)而在復(fù)雜且不規(guī)則的Word模板內(nèi)隨意生成預(yù)期的報(bào)表形式.
LabVIEW有多種生成報(bào)表的方法,如利用File I/O類(lèi)、Report Generation類(lèi)、Report Generation Toolkit、ActiveX等.
File I/O類(lèi)生成的報(bào)表是ASCII格式的文本文件,簡(jiǎn)潔、速度快,但不能分段文字、繪制表格和插入圖片,只能用在對(duì)格式要求不高的報(bào)表[5];Report Generation類(lèi)生成的報(bào)表是LabVIEW的標(biāo)準(zhǔn)報(bào)表或HTML網(wǎng)頁(yè)格式報(bào)表,美觀且可繪制簡(jiǎn)單的表格和插入圖片,但不適合制作樣式復(fù)雜的報(bào)表,且生成的報(bào)表不易二次手動(dòng)修改;Report Generation Toolkit是報(bào)表生成最方便的方法,但這種工具包未集成在LabVIEW中,必須單獨(dú)購(gòu)買(mǎi)且性價(jià)比低[6];LabVIEW支持ActiveX調(diào)用Word程序,可以很方便地生成復(fù)雜的報(bào)表,無(wú)論測(cè)試數(shù)據(jù)量多大、報(bào)表的結(jié)構(gòu)多復(fù)雜,都可生成整齊美觀的報(bào)表.利用ActiveX生成Word報(bào)表是最常用的一種方法.
通過(guò)ActiveX實(shí)現(xiàn)LabVIEW控制Word程序的原理是把一個(gè)程序作為客戶端,另一個(gè)程序作為服務(wù)器端,兩個(gè)程序間通過(guò)客戶端調(diào)用服務(wù)器端提供的ActiveX對(duì)象實(shí)現(xiàn)信息共享,因此實(shí)現(xiàn)LabVIEW與Word通信,必須要知道Word的ActiveX對(duì)象,主要使用的幾個(gè)對(duì)象如表1所示.
表1 Word中常用的對(duì)象
調(diào)用Selection下的Move Down/Up、 Move Left/Right可以實(shí)現(xiàn)光標(biāo)上下左右移動(dòng),調(diào)用TypeText節(jié)點(diǎn)實(shí)現(xiàn)文本的寫(xiě)入.向表格的某一單元格內(nèi)寫(xiě)入數(shù)據(jù),需要調(diào)用一次Move節(jié)點(diǎn),調(diào)用一次TypeText節(jié)點(diǎn),費(fèi)時(shí)且操作不便,若需要寫(xiě)入大量的測(cè)試數(shù)據(jù),這種不便會(huì)更為明顯,因此,需要?jiǎng)?chuàng)建一個(gè)光標(biāo)移動(dòng)文本寫(xiě)入子VI(如圖1),使光標(biāo)移動(dòng)與文本寫(xiě)入集于一體,既可以控制“寫(xiě)入”與“移動(dòng)”的先后順序,同時(shí)又可以控制“右移”與“下移”的先后順序.默認(rèn)全為假,即先向右移動(dòng),再向下移動(dòng),最后寫(xiě)入文本,程序框圖如圖2.
圖1 光標(biāo)移動(dòng)文本寫(xiě)入子VI
圖2 光標(biāo)移動(dòng)文本寫(xiě)入子VI程序框圖
通過(guò)ActiveX調(diào)用Word應(yīng)用程序,才可以實(shí)現(xiàn)LabVIEW對(duì)Word的操作.具體流程為:
1)打開(kāi)自動(dòng)化服務(wù)器,獲取自動(dòng)化引用句柄:在程序框圖中放置“打開(kāi)自動(dòng)化”節(jié)點(diǎn),創(chuàng)建“自動(dòng)化引用句柄”并在其上右擊依次選擇“選擇ActiveX類(lèi)”→“瀏覽…”→“Microsoft Word 12.0 Object Library Version 8.4”→“Application Word.Application.12”.
2)設(shè)置Documents屬性節(jié)點(diǎn):添加Visible元素并將其設(shè)置為可見(jiàn).
3)調(diào)用Word模板:不使用Word模板,就會(huì)在空文檔中生成報(bào)表,但很難生成復(fù)雜且不規(guī)則的報(bào)表;使用Word模板,可實(shí)現(xiàn)預(yù)期的報(bào)表形式.本文采用文獻(xiàn)[7]的振動(dòng)測(cè)試Word模板(如圖3).
圖3 Word模板
4)關(guān)閉自動(dòng)化引用:結(jié)束對(duì)Word的訪問(wèn).
Word模板打開(kāi)之后,光標(biāo)并不在模板表格內(nèi),還需要調(diào)用Selection的GoToNext元素,what處選擇wdGoToTable,此時(shí)光標(biāo)就會(huì)移動(dòng)到表格內(nèi).利用創(chuàng)建的光標(biāo)移動(dòng)文本寫(xiě)入子VI,就可以實(shí)現(xiàn)對(duì)模板表格的操作.光標(biāo)從一個(gè)單元格移動(dòng)到下一個(gè)單元格,移動(dòng)的步數(shù)為光標(biāo)所在單元格的字符個(gè)數(shù)加1,如空字符時(shí),移動(dòng)一步就可進(jìn)入下個(gè)單元格.轉(zhuǎn)行符也是一個(gè)字符,右移轉(zhuǎn)入下一行時(shí),步數(shù)需加1.模板表格中有12處需要寫(xiě)入文本,可以在每一處的位置上插入書(shū)簽,利用MS Office Report.vi直接寫(xiě)入文本.測(cè)試結(jié)果一般為數(shù)字型,轉(zhuǎn)換為字符串后才能被Text接收,故使用“數(shù)值至小數(shù)字符串轉(zhuǎn)換”節(jié)點(diǎn),然后對(duì)生成的文本數(shù)組創(chuàng)建局部變量,最后與Text連接.對(duì)于規(guī)則表格內(nèi)插入數(shù)據(jù),盡量使用for 循環(huán),本例利用for循環(huán)將一維文本數(shù)組寫(xiě)入到表格中.
LabVIEW軟件常常需要將波形圖、波形圖表等導(dǎo)出在報(bào)表中.為此需要調(diào)用InlineShapes節(jié)點(diǎn),其下元素FileName為文本格式,僅能接收字符串,為了將路徑轉(zhuǎn)換為字符串格式,需要調(diào)用“路徑至字符串轉(zhuǎn)換”函數(shù)節(jié)點(diǎn).振動(dòng)曲線波形圖上右擊依次選擇“創(chuàng)建”→“調(diào)用節(jié)點(diǎn)”→“導(dǎo)出對(duì)象”,生成其調(diào)用節(jié)點(diǎn),將BMP格式的圖片存于某路徑.詳細(xì)程序框圖如圖4.
點(diǎn)擊前面板上的“報(bào)表生成”控件,運(yùn)行整個(gè)程序,便可自動(dòng)生成一份復(fù)雜的Word報(bào)表(如圖5).
圖4 ActiveX生成Word報(bào)表程序框圖
圖5 最終的Word報(bào)表
在LabVIEW軟件中,利用ActiveX技術(shù)可以方便地生成一份格式復(fù)雜、界面美觀的Word報(bào)表.但對(duì)于復(fù)雜不規(guī)則的Word報(bào)表生成,不能利用for循環(huán)實(shí)現(xiàn),需要時(shí)刻移動(dòng)光標(biāo)的位置,程序編程很繁瑣,為了簡(jiǎn)化操作,創(chuàng)建的光標(biāo)移動(dòng)文本寫(xiě)入子VI可方便地向復(fù)雜且不規(guī)則的Word模板中寫(xiě)入測(cè)量數(shù)據(jù),具有很強(qiáng)的靈活性與便利性.
[1] 劉闖.基于LabVIEW的報(bào)表生成[J].測(cè)控技術(shù),2010,29(5): 102-103.
[2] 陳樹(shù)學(xué),劉萱.LabVIEW寶典[M].北京:電子工業(yè)出版社,2011: 281-282.
[3] 付志超,陳馨,張聰,等.LabVIEW中基于ActiveX的報(bào)表生成技術(shù)研究[J].船電技術(shù)應(yīng)用研究,2010,30(4):60-63.
[4] 曲海山,龔明,封云.基于LabVIEW的Word報(bào)表生成方法[J].制導(dǎo)與引信,2013,34(1): 54-58.
[5] 張磊,王斌.LabVIEW報(bào)表生成技術(shù)在計(jì)量系統(tǒng)中的應(yīng)用[J].計(jì)量技術(shù),2005,25(3): 61-62.
[6] 劉允峰.基于LabVIEW8.5和ActiveX技術(shù)的報(bào)表生成[J].應(yīng)用天地,2011,30(1): 64-66.
[7] 王剛.高速精密滾珠絲杠副綜合性能測(cè)試系統(tǒng)開(kāi)發(fā)[D].大連:大連理工大學(xué),2012: 53-56.
[責(zé)任編輯:韋 韜]
Complex Word Report Customization Based on ActiveX in LabVIEW
YANG Jun-tao,LI Ting,SUN Quan-he
(School of Mechanical and Electrical Engineering,Wuyi University,Jiangmen 529020,China)
In order to generate complex and irregular test reports,the methods for generating LabVIEW reports are compared,and it is proposed to use ActiveX automation technology to generate Word reports.By creating “attribute nodes” and “invoke nodes”,a sub-VI function node of “cursor movement and text writing” is established to achieve the flexible movement of the cursor and the random inserting of texts and images
LabVIEW; ActiveX; Word reports
TP274
A
1006-7302(2016)01-0069-04
2015-10-22
楊俊濤(1987—),男,河北邯鄲人,在讀碩士生.主要從事機(jī)械振動(dòng)與測(cè)試方面的研究;李霆,教授,博士,碩士生導(dǎo)師,通信作者,研究方向?yàn)檎駝?dòng)分析與結(jié)構(gòu)動(dòng)態(tài)設(shè)計(jì)、智能信號(hào)處理與機(jī)械測(cè)試技術(shù)、動(dòng)力學(xué)控制與仿真和機(jī)電一體化技術(shù).