曲海山, 龔 明, 馮 云
(上海無線電設(shè)備研究所,上海200090)
對(duì)于一個(gè)完整的測(cè)試系統(tǒng),測(cè)試完畢后往往需要生成相應(yīng)的測(cè)試數(shù)據(jù)報(bào)表以備日后查詢和對(duì)比。但是,一般復(fù)雜的測(cè)試系統(tǒng)測(cè)試的數(shù)據(jù)量較大,需要記錄的測(cè)試數(shù)據(jù)較多,數(shù)據(jù)報(bào)表相應(yīng)就比較復(fù)雜。LabVIEW 具有豐富的生成報(bào)表子VI,通過不同的方法可以用來生成各種各樣的報(bào)表以滿足不同的需求。本文對(duì)利用LabVIEW 生成Word報(bào)表的三種不同方法做了較為詳細(xì)的比較和闡述。
對(duì)于一些簡(jiǎn)單的報(bào)表,利用MS Office Report.vi生成[1],非常方便。在Word 文檔中用書簽為一個(gè)需要插入信息的位置命名,MS Office Report.vi可以找到Word 模板中所有書簽的位置,從而在該位置中寫入數(shù)據(jù)。例如,要制作如下格式的數(shù)據(jù)表格,同時(shí)在表格空白處填入測(cè)試信息。
表1 測(cè)試報(bào)告
首先需要?jiǎng)?chuàng)建Word模板:在Word文檔中分別在需要寫入數(shù)據(jù)的空白處插入書簽,并為書簽命名,另存為文檔模板(*.dot)格式。結(jié)果如圖1所示。
圖1 插入書簽
然后運(yùn)行LabVIEW(需安裝Report Generation Toolkit工具包),選擇MS Office Report.vi。彈出Configure MS Office Report對(duì)話框,如圖2所示。
圖2 Configure MS Office Report對(duì)話框
在模板項(xiàng)選擇Custom Report for Word,路徑選擇模板保存路徑。選擇完畢之后,在Report Contents中會(huì)自動(dòng)加載在模板中插入的書簽名稱。在Report中可以選擇打開、打印或者保存文檔。單擊OK,配置完成,運(yùn)行程序,如圖3所示。
圖3 MS Office Report程序圖
程序運(yùn)行結(jié)果,如圖4所示。
圖4 MS Office Report程序結(jié)果
利用MS Office Report.vi生成Word 報(bào)表適合于簡(jiǎn)單報(bào)表,數(shù)據(jù)位置寫入靈活,編程比較方便,但是MS Office Report.vi識(shí)別模板中的書簽數(shù)量最大為17個(gè),即當(dāng)模板中的書簽大于17個(gè)時(shí),如圖5所示。MS Office Report.vi只能識(shí)別前17個(gè)書簽位置,換句話說,MS Office Report最多只能完成17個(gè)數(shù)據(jù)的寫入,這就大大限制了MS Office Report.vi在復(fù)雜報(bào)表中的應(yīng)用。
圖5 當(dāng)模板書簽個(gè)數(shù)大于17時(shí)提示
LabVIEW 對(duì)ActiveX 提供了良好的支持,ActiveX 調(diào)用Word的一般流程為[2]:
a)打開自動(dòng)化引用:使用Automation Open創(chuàng)建自動(dòng)化引用句柄。
b)設(shè)置對(duì)象屬性和調(diào)用方法:通過使用屬性和方法訪問Word 對(duì)象,完成表格操作。
c)關(guān)閉自動(dòng)化引用:結(jié)束對(duì)Word的訪問。
利用ActiveX 生成Word報(bào)表既可以打開空白文檔生成Word報(bào)表完成數(shù)據(jù)寫入,但是這種方法只針對(duì)簡(jiǎn)單報(bào)表方便可行,對(duì)于復(fù)雜報(bào)表,可以事先做好模板,然后通過控制鼠標(biāo)位置往模板中輸入信息。
利用ActiveX 生成如表2所示的測(cè)試報(bào)告,需要在所有測(cè)試值和測(cè)試結(jié)果對(duì)應(yīng)的空格處寫入數(shù)據(jù)。很明顯,寫入數(shù)據(jù)數(shù)量為20 個(gè),大于17個(gè),如果利用MS Office Report.vi來完成,有3個(gè)數(shù)據(jù)是無法寫入的,所以采用ActiveX 來完成。
表2 測(cè)試報(bào)告2
首先,制作如表1所示的模板,注意在程序運(yùn)行期間模板一定要打開,不能關(guān)閉。其次,利用ActiveX 調(diào)用Word,通過屬性節(jié)點(diǎn)和調(diào)用節(jié)點(diǎn)完成對(duì)模板表格信息的輸入。在這個(gè)過程中,主要是調(diào)用Selection方法,控制鼠標(biāo)位置,完成信息的輸入,利用Selection 方法可以完成字體的大小、顏色等格式的設(shè)置。
但是由于調(diào)用Selection方法控制的是鼠標(biāo)位置,所以在模板中鼠標(biāo)的起始位置很重要,起始位置不同,程序編寫難易程度是不同的,本次程序如圖6所示,鼠標(biāo)起始位置為表格第2行第6列。
圖6 ActiveX 調(diào)用Word生成Word報(bào)表程序
程序運(yùn)行結(jié)果如圖7所示。
圖7 ActiveX 調(diào)用Word生成Word報(bào)表結(jié)果
從結(jié)果上看,利用ActiveX 自動(dòng)化生成的Word報(bào)表,具有較好的效果,簡(jiǎn)單實(shí)用。但是,本次報(bào)表生成是寫入兩列數(shù)據(jù),這兩列數(shù)據(jù)是很規(guī)則的,利用for循環(huán)不斷調(diào)整鼠標(biāo)位置,來輸入信息很容易實(shí)現(xiàn)。但是對(duì)于不規(guī)則的模板,不能利用for循環(huán)來做,那就需要大量調(diào)用Selection方法,以調(diào)整鼠標(biāo)位置,就會(huì)相當(dāng)繁瑣。
如果將表1和表2做成一張表,要生成這樣一張表,利用MS Office Report.vi,寫入數(shù)據(jù)數(shù)量過多。利用ActiveX,表格不規(guī)則,需要頻繁調(diào)用Selection,比較繁瑣。Report Generation Toolkit工具包里包含生成Word文檔的Word Specific,有很多VI可以來設(shè)置Word表格的各種格式,生成漂亮的Word表格,十分方便實(shí)用[3]。所以可以利用Report Generation Toolkit工具包中的Word Specific來很方便的生成表1 和表2 的聯(lián)合表格,如圖8 所示,需要生成聯(lián)合表格的模板表格。
圖8 Word Specific程序圖
從結(jié)果上看,利用Report Generation Toolkit工具包中的Word Specific方法,程序簡(jiǎn)單,表格漂亮。特別是針對(duì)復(fù)雜報(bào)表,該方法簡(jiǎn)單高效。
圖9 RGT 程序運(yùn)行結(jié)果
本文介紹了三種利用LabVIEW 生成Word報(bào)表的方法。針對(duì)簡(jiǎn)單的報(bào)表,三種方法都很實(shí)用。針對(duì)復(fù)雜規(guī)則的數(shù)據(jù)報(bào)表,利用ActiveX方法和Word Specific方法都是可以方便實(shí)現(xiàn)的。針對(duì)復(fù)雜不規(guī)則的報(bào)表,利用ActiveX 方法無法通過for循環(huán)實(shí)現(xiàn),需要時(shí)刻掌握鼠標(biāo)位置,程序編寫很繁瑣。利用Report Generation Toolkit工具包 中的Word Specific就顯得更簡(jiǎn)便。
[1] 林靜,林振宇,鄭福仁.LabVIEW 虛擬儀器程序設(shè)計(jì)從入門到精通[M].北京:人民郵電出版社,2010.
[2] 付志超,陳馨,張聰,等.LabVIEW 中基于ActiveX的報(bào)表生成技術(shù)研究[J].船電技術(shù),2010,30(4).
[3] 陳樹學(xué),劉萱.LabVIEW 寶典[M].北京:電子工業(yè)出版社,2011.