在測(cè)控應(yīng)用上,一般都需要軟件能夠出報(bào)表,方便保存或打印測(cè)試信息、數(shù)據(jù)、圖表等。出報(bào)表,這可以說(shuō)是LabVIEW的拿手好戲了。在LabVIEW里出一份像樣的報(bào)表,與代碼編程比起來(lái),那可真是事半功倍。
本篇推送里我給大家介紹三大類(lèi)五六種出報(bào)表的方法——都是簡(jiǎn)單、快速、高效的方法。
1.使用圖表控件導(dǎo)出數(shù)據(jù)功能快速創(chuàng)建數(shù)據(jù)報(bào)表
這個(gè)方法可以快速創(chuàng)建excel格式的數(shù)據(jù)報(bào)表,簡(jiǎn)易方便,幾乎沒(méi)有編程工作量。
例如下面這個(gè)代碼,運(yùn)行后自動(dòng)產(chǎn)生一個(gè)excel臨時(shí)文件,保存產(chǎn)生的信號(hào)數(shù)據(jù)。

上述代碼產(chǎn)生的Excel文件:

這個(gè)本質(zhì)上是通過(guò)圖表控件導(dǎo)出數(shù)據(jù)方法創(chuàng)建的excel文件。其實(shí)也可以不用代碼,用戶(hù)可以在圖表控件上單擊鼠標(biāo)右鍵,選擇Export->Export Data to Excel也是可以生成和保存這個(gè)Excel文件的。
這個(gè)方法非常簡(jiǎn)便,但是缺點(diǎn)也很明顯。例如不能自動(dòng)保存報(bào)表、不能給報(bào)表添加表頭信息、不能給報(bào)表增加其它數(shù)據(jù)等。
2.Report Generation VIs
想要?jiǎng)?chuàng)建正兒八經(jīng)的報(bào)表,我們需要專(zhuān)業(yè)工具。
Report Generation VIs是一組LabVIEW自帶的用于創(chuàng)建和修改報(bào)表的VI,在Programming->Report Generation分類(lèi)下可以找到它們。
Report Generation VIs可以創(chuàng)建word、excel或者h(yuǎn)tml格式的報(bào)表。

1)Report Generation相關(guān)VI介紹
| 分類(lèi) | VI名稱(chēng) | 功能 |
|---|---|---|
| / | Create Easy Text Report | 創(chuàng)建簡(jiǎn)易文本報(bào)表,輸出至打印機(jī)或者文件。報(bào)表格式可以為HTML、Word或Excel,報(bào)表內(nèi)容為文本??稍O(shè)置頁(yè)眉、頁(yè)腳、字體等。 |
| / | Create Report | 創(chuàng)建報(bào)表,輸出報(bào)表引用。通過(guò)報(bào)表引用可以為報(bào)表增加文字、表格、圖像等內(nèi)容,也可以設(shè)置字體、頁(yè)眉、頁(yè)腳等。報(bào)表格式可以為HTML、Word或Excel。 |
| / | Print Report | 打印報(bào)表。 |
| / | Save Report to File | 保存報(bào)表。 |
| / | Set Report Font | 設(shè)置報(bào)表字體。 |
| / | Append Report Text | 添加文本至報(bào)表。 |
| / | Append Table to Report | 添加表格至報(bào)表。 |
| / | Append List to Report | 添加列表至報(bào)表。 |
| / | Append Control Image to Report | 添加控件圖像至報(bào)表。 |
| / | Append Image to Report | 添加圖像至報(bào)表。 |
| / | Dispose Report | 關(guān)閉報(bào)表并釋放內(nèi)存。 |
| / | Report | 提供設(shè)置對(duì)話(huà)框,設(shè)置好報(bào)表表頭信息、數(shù)據(jù)、存儲(chǔ)路徑或打印機(jī)等,以預(yù)先設(shè)置好的格式創(chuàng)建報(bào)表。報(bào)表文件格式可以為HTML、Word或Excel。 |
| / | MS Office Report | 通過(guò)模板創(chuàng)建Word或Excel格式報(bào)表。 |
| VI Documentation | Append VI Block Diagram to Report等 | 一些可把程序框圖、界面、子VI清單等信息加進(jìn)報(bào)表的VI。 |
| Report Layout | Set Report Margin、Set Report Orientation等 | 一些設(shè)置報(bào)表布局的VI。 |
| Word Specific | Word Easy Title、Word Easy Table等 | Word格式報(bào)表特定一些VI,例如給報(bào)表增加表格。 |
| Excel Specific | Excel Easy Table、Excel Easy Graph等 | Excel格式報(bào)表特定的一些VI,例如給圖表增加圖表。 |
| HTML REports Only | Append Horizontal Line to Report、Open HTML Report in Browser等 | HTML格式報(bào)表特定的一些VI,例如給報(bào)表增加橫線、超鏈接、在瀏覽器中打開(kāi)報(bào)表。 |
| Advanced Report Generation | Append File to Report、Querry Available Printers等 | 附加文件到報(bào)表、查詢(xún)可用打印機(jī)等報(bào)表相關(guān)高級(jí)功能。 |
2)創(chuàng)建簡(jiǎn)易文本報(bào)表
下面代碼使用Create Easy Text Report創(chuàng)建一個(gè)簡(jiǎn)易的HTML報(bào)表。

報(bào)表的樣式如下(截屏?xí)r調(diào)整了瀏覽器窗口大?。?/p>

3)創(chuàng)建預(yù)先格式化報(bào)表
把Report Generation分類(lèi)下的Report
放置到程序框圖中,雙擊按照下圖設(shè)置好報(bào)表格式。

代碼如下:

運(yùn)行后產(chǎn)生的word格式報(bào)表如下圖(部分)。
如果設(shè)置的時(shí)候不勾選Include Table就不會(huì)有長(zhǎng)長(zhǎng)的、保存數(shù)據(jù)的表格(100個(gè)數(shù)據(jù),共8頁(yè))。

4)使用模板創(chuàng)建報(bào)表
我們自己定義一個(gè)Excel模板,如下圖。其中Author、Date、Time、Sigal Graph和Signal Data是需要寫(xiě)入的內(nèi)容。

放置一個(gè)MS Office Report到程序框圖上,雙擊在設(shè)置中選擇我們之前創(chuàng)建的模板文件,就會(huì)自動(dòng)分析出該模板需要輸入的數(shù)據(jù)。Report Contents里列出了我們可以輸入的內(nèi)容名稱(chēng)。我們把Signal_Graph輸入在報(bào)表中的呈現(xiàn)形式(Input Apperance in Report)修改為Graph,把Signal_Data輸入在報(bào)表中的呈現(xiàn)形式修改為T(mén)able,其它默認(rèn)。

這里插句話(huà),前面的Excel模板是怎么制作的呢?LabVIEW怎么會(huì)知道我需要輸入哪些數(shù)據(jù)的呢?其實(shí)很簡(jiǎn)單:新建一個(gè)Excel文件,填入固定信息(例如報(bào)表中公司名稱(chēng)、小標(biāo)題等),使用公式中的“定義名稱(chēng)”定義需要輸入的數(shù)據(jù),為需要輸入的數(shù)據(jù)指定輸入起始單元格位置,最后保存為Excel模板文件(.xltx)即可。定義名稱(chēng)時(shí)輸入的“名稱(chēng)”就是我們?cè)贚abVIEW里Configure MS Office Report時(shí)可以看到的報(bào)表內(nèi)容(Report Contents)。

我們用下面的代碼按照上面設(shè)計(jì)的Excel模板創(chuàng)建一個(gè)報(bào)表。代碼里我們把信號(hào)數(shù)據(jù)轉(zhuǎn)成了一維數(shù)組,然后把一維數(shù)組轉(zhuǎn)成了20x5的二維數(shù)組,目的是為了讓excel報(bào)表中的數(shù)據(jù)不要那么長(zhǎng)(否則就像前面word報(bào)表中一樣,100個(gè)數(shù)據(jù)會(huì)需要好幾頁(yè)才能放得下)。

產(chǎn)生的excel報(bào)表如下圖??梢钥吹剑缥覀兤谕哪菢?,在Signal Graph下面自動(dòng)插入了信號(hào)波形圖形;在Signal Data下自動(dòng)插入了信號(hào)數(shù)據(jù),第一列是自動(dòng)輸入的編號(hào);Autor等輸入的信息,也都填入了指定的位置。

這個(gè)Excel報(bào)表,因?yàn)閷?duì)信號(hào)數(shù)據(jù)的展示重新進(jìn)行了編排,所以看上去更加美觀了,整個(gè)報(bào)表只需要一頁(yè)。這樣一個(gè)報(bào)表我想已經(jīng)能夠滿(mǎn)足很大一部分項(xiàng)目的使用需求了。然而如你所見(jiàn),它的創(chuàng)建過(guò)程其實(shí)非常簡(jiǎn)單:制作模板、一個(gè)VI搞定。
5)使用VI創(chuàng)建報(bào)表
下面這個(gè)代碼,使用Create Report、Append Text to Report、Append Control Image to Report、Append Table to Report、Excel Rename Worksheet、Save Report to File等VI創(chuàng)建并保存報(bào)表。
在調(diào)用Create Report時(shí),我們制定了使用4)中創(chuàng)建的Excel模板。模板不是必須的,但是我覺(jué)得模板可以很方便地預(yù)先設(shè)定報(bào)表格式,可以簡(jiǎn)化不少工作。在有模板的情況下,Append Text to Report等VI可以使用模板中定義的名稱(chēng)(公式-定義名稱(chēng))指定待寫(xiě)入內(nèi)容在報(bào)表中的位置。

產(chǎn)生的報(bào)表如下。截屏是包含報(bào)表的Excel電子表格,可以看到電子表格的名稱(chēng)已經(jīng)重新命名為我們?cè)诖a中指定的名稱(chēng)。

下面這個(gè)代碼創(chuàng)建和上面類(lèi)似的報(bào)表,但是不使用Excel模板;另外它除了將報(bào)表保存為電子表格,還保存為pdf。

產(chǎn)生的excel報(bào)表如下。通過(guò)指定行、列值,我們把圖表和數(shù)據(jù)放置到報(bào)表中間位置了。

代碼中我們調(diào)用Excel Get ActiveX References獲得了Excel Workbook的ActiveX引用,然后調(diào)用ExportAsFixedFormat方法將報(bào)表保存為PDF格式。PDF格式的報(bào)表效果如下。

使用Report Generation VIs根據(jù)需要可以創(chuàng)建多種格式和復(fù)雜度的報(bào)表,能夠滿(mǎn)足絕大多數(shù)的開(kāi)發(fā)要求。但是,使用Report Generation VIs創(chuàng)建Word和Excel格式的報(bào)表時(shí),以下幾點(diǎn)需要特別注意:
a)計(jì)算機(jī)上必須安裝有與文件格式對(duì)應(yīng)的Offcie軟件。
要?jiǎng)?chuàng)建Word格式報(bào)表,必須安裝有Word軟件;要?jiǎng)?chuàng)建Excel格式報(bào)表,必須安裝有Excel軟件。在沒(méi)有安裝這些軟件的計(jì)算機(jī)上,運(yùn)行產(chǎn)生Word或Excel格式報(bào)表的代碼,無(wú)法產(chǎn)生報(bào)表,并可能會(huì)導(dǎo)致軟件運(yùn)行異常。
b)Office的版本需要是LabVIEW支持的版本。
c)32位的LabVIEW只能完美支持32位的Office。64位的LabVIEW能夠支持64位的Office,是否能夠完美支持32位的Office我沒(méi)有測(cè)試過(guò)。32位的LabVIEW+64位的Office,會(huì)導(dǎo)致出現(xiàn)報(bào)表不能保存、保存報(bào)表時(shí)LabVIEW崩潰退出等問(wèn)題。
d)如果不能保存報(bào)表、又不報(bào)任何錯(cuò)誤,可以嘗試下面這個(gè)方法。
在“C:Program Files (X86)National InstrumentsLabVIEW 2022vi.libaddons_office_exclsub.llb”路徑下找到“Excel_Save_Workbook.vi”,打開(kāi)可以看見(jiàn)一個(gè)灰色的調(diào)用節(jié)點(diǎn),右鍵選擇Relink,然后保存。

Relink之后的變化:

借助Report Generation VIs生成報(bào)表需要安裝有Office軟件,需要Office的版本是LabVIEW支持的,如果是32位的LabVIEW則不能使用64位的Office,這些條件在目標(biāo)機(jī)器上是不一定能夠滿(mǎn)足的,計(jì)算機(jī)更新或維護(hù)后Office版本可能也會(huì)有變化。
有沒(méi)有辦法可以既能生成Word或Excel格式報(bào)表,又不依賴(lài)Office軟件呢?我們可以使用下面介紹的工具。
3.Viewpoint Xlsx Toolkit/Viewpoint Docx Toolkit
從名稱(chēng)就可以看出來(lái),這兩個(gè)插件一個(gè)負(fù)責(zé)產(chǎn)生Excel格式的報(bào)表,另一個(gè)負(fù)責(zé)產(chǎn)生Word格式的報(bào)表。與Report Generation VIs不同的時(shí),它們不需要部署的計(jì)算機(jī)上安裝有Excel或Word軟件。
這兩個(gè)插件都可以在VIPM里找到。我們以Viewpoint Docx Toolkit為例,說(shuō)明一下怎么生成word報(bào)表。
這個(gè)插件不是免費(fèi)的,但是我覺(jué)得很便宜。一個(gè)License的價(jià)格是1865元,只需要開(kāi)發(fā)端授權(quán),使用該插件開(kāi)發(fā)的功能可以免費(fèi)部署到任意臺(tái)計(jì)算機(jī)上,與每臺(tái)應(yīng)用端部署Office的成本比起來(lái)是不是很優(yōu)惠?

安裝好之后,我們可以在Programming分類(lèi)下找到Viewpoint Docx Toolkit。

下面的代碼使用Viewpoint Docx Toolkit提供的API函數(shù)創(chuàng)建word報(bào)表。

創(chuàng)建的速度非???,比使用Report Generation VIs創(chuàng)建報(bào)表要迅速得多,而且不需要計(jì)算機(jī)上安裝有Office軟件。創(chuàng)建好的報(bào)表如下。

好了,以上是關(guān)于LabVIEW里快速創(chuàng)建報(bào)表的一些介紹,希望能夠幫助到大家。因?yàn)槭褂肙ffice的ActiveX創(chuàng)建報(bào)表,都比上面的方法復(fù)雜,就不詳細(xì)說(shuō)明了。文章如有不對(duì)的地方歡迎大家指正。
-
LabVIEW
+關(guān)注
關(guān)注
2012文章
3681瀏覽量
344086 -
編程
+關(guān)注
關(guān)注
90文章
3707瀏覽量
96713 -
Excel
+關(guān)注
關(guān)注
4文章
230瀏覽量
57532 -
報(bào)表
+關(guān)注
關(guān)注
0文章
18瀏覽量
9619
原文標(biāo)題:談?wù)凩abVIEW怎么事半功倍出報(bào)表
文章出處:【微信號(hào):傳感測(cè)控物聯(lián)網(wǎng),微信公眾號(hào):傳感測(cè)控物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄

關(guān)于LabVIEW快速創(chuàng)建報(bào)表的一些方法
評(píng)論