在測控應(yīng)用上,一般都需要軟件能夠出報表,方便保存或打印測試信息、數(shù)據(jù)、圖表等。出報表,這可以說是LabVIEW的拿手好戲了。在LabVIEW里出一份像樣的報表,與代碼編程比起來,那可真是事半功倍。
本篇推送里我給大家介紹三大類五六種出報表的方法——都是簡單、快速、高效的方法。
1.使用圖表控件導(dǎo)出數(shù)據(jù)功能快速創(chuàng)建數(shù)據(jù)報表
這個方法可以快速創(chuàng)建excel格式的數(shù)據(jù)報表,簡易方便,幾乎沒有編程工作量。
例如下面這個代碼,運(yùn)行后自動產(chǎn)生一個excel臨時文件,保存產(chǎn)生的信號數(shù)據(jù)。
上述代碼產(chǎn)生的Excel文件:
這個本質(zhì)上是通過圖表控件導(dǎo)出數(shù)據(jù)方法創(chuàng)建的excel文件。其實(shí)也可以不用代碼,用戶可以在圖表控件上單擊鼠標(biāo)右鍵,選擇Export->Export Data to Excel也是可以生成和保存這個Excel文件的。
這個方法非常簡便,但是缺點(diǎn)也很明顯。例如不能自動保存報表、不能給報表添加表頭信息、不能給報表增加其它數(shù)據(jù)等。
2.Report Generation VIs
想要創(chuàng)建正兒八經(jīng)的報表,我們需要專業(yè)工具。
Report Generation VIs是一組LabVIEW自帶的用于創(chuàng)建和修改報表的VI,在Programming->Report Generation分類下可以找到它們。
Report Generation VIs可以創(chuàng)建word、excel或者h(yuǎn)tml格式的報表。
1)Report Generation相關(guān)VI介紹
分類 | VI名稱 | 功能 |
---|---|---|
/ | Create Easy Text Report | 創(chuàng)建簡易文本報表,輸出至打印機(jī)或者文件。報表格式可以為HTML、Word或Excel,報表內(nèi)容為文本??稍O(shè)置頁眉、頁腳、字體等。 |
/ | Create Report | 創(chuàng)建報表,輸出報表引用。通過報表引用可以為報表增加文字、表格、圖像等內(nèi)容,也可以設(shè)置字體、頁眉、頁腳等。報表格式可以為HTML、Word或Excel。 |
/ | Print Report | 打印報表。 |
/ | Save Report to File | 保存報表。 |
/ | Set Report Font | 設(shè)置報表字體。 |
/ | Append Report Text | 添加文本至報表。 |
/ | Append Table to Report | 添加表格至報表。 |
/ | Append List to Report | 添加列表至報表。 |
/ | Append Control Image to Report | 添加控件圖像至報表。 |
/ | Append Image to Report | 添加圖像至報表。 |
/ | Dispose Report | 關(guān)閉報表并釋放內(nèi)存。 |
/ | Report | 提供設(shè)置對話框,設(shè)置好報表表頭信息、數(shù)據(jù)、存儲路徑或打印機(jī)等,以預(yù)先設(shè)置好的格式創(chuàng)建報表。報表文件格式可以為HTML、Word或Excel。 |
/ | MS Office Report | 通過模板創(chuàng)建Word或Excel格式報表。 |
VI Documentation | Append VI Block Diagram to Report等 | 一些可把程序框圖、界面、子VI清單等信息加進(jìn)報表的VI。 |
Report Layout | Set Report Margin、Set Report Orientation等 | 一些設(shè)置報表布局的VI。 |
Word Specific | Word Easy Title、Word Easy Table等 | Word格式報表特定一些VI,例如給報表增加表格。 |
Excel Specific | Excel Easy Table、Excel Easy Graph等 | Excel格式報表特定的一些VI,例如給圖表增加圖表。 |
HTML REports Only | Append Horizontal Line to Report、Open HTML Report in Browser等 | HTML格式報表特定的一些VI,例如給報表增加橫線、超鏈接、在瀏覽器中打開報表。 |
Advanced Report Generation | Append File to Report、Querry Available Printers等 | 附加文件到報表、查詢可用打印機(jī)等報表相關(guān)高級功能。 |
2)創(chuàng)建簡易文本報表
下面代碼使用Create Easy Text Report創(chuàng)建一個簡易的HTML報表。
報表的樣式如下(截屏?xí)r調(diào)整了瀏覽器窗口大小):
3)創(chuàng)建預(yù)先格式化報表
把Report Generation分類下的Report放置到程序框圖中,雙擊按照下圖設(shè)置好報表格式。
代碼如下:
運(yùn)行后產(chǎn)生的word格式報表如下圖(部分)。
如果設(shè)置的時候不勾選Include Table就不會有長長的、保存數(shù)據(jù)的表格(100個數(shù)據(jù),共8頁)。
4)使用模板創(chuàng)建報表
我們自己定義一個Excel模板,如下圖。其中Author、Date、Time、Sigal Graph和Signal Data是需要寫入的內(nèi)容。
放置一個MS Office Report到程序框圖上,雙擊在設(shè)置中選擇我們之前創(chuàng)建的模板文件,就會自動分析出該模板需要輸入的數(shù)據(jù)。Report Contents里列出了我們可以輸入的內(nèi)容名稱。我們把Signal_Graph輸入在報表中的呈現(xiàn)形式(Input Apperance in Report)修改為Graph,把Signal_Data輸入在報表中的呈現(xiàn)形式修改為Table,其它默認(rèn)。
這里插句話,前面的Excel模板是怎么制作的呢?LabVIEW怎么會知道我需要輸入哪些數(shù)據(jù)的呢?其實(shí)很簡單:新建一個Excel文件,填入固定信息(例如報表中公司名稱、小標(biāo)題等),使用公式中的“定義名稱”定義需要輸入的數(shù)據(jù),為需要輸入的數(shù)據(jù)指定輸入起始單元格位置,最后保存為Excel模板文件(.xltx)即可。定義名稱時輸入的“名稱”就是我們在LabVIEW里Configure MS Office Report時可以看到的報表內(nèi)容(Report Contents)。
我們用下面的代碼按照上面設(shè)計的Excel模板創(chuàng)建一個報表。代碼里我們把信號數(shù)據(jù)轉(zhuǎn)成了一維數(shù)組,然后把一維數(shù)組轉(zhuǎn)成了20x5的二維數(shù)組,目的是為了讓excel報表中的數(shù)據(jù)不要那么長(否則就像前面word報表中一樣,100個數(shù)據(jù)會需要好幾頁才能放得下)。
產(chǎn)生的excel報表如下圖??梢钥吹剑缥覀兤谕哪菢?,在Signal Graph下面自動插入了信號波形圖形;在Signal Data下自動插入了信號數(shù)據(jù),第一列是自動輸入的編號;Autor等輸入的信息,也都填入了指定的位置。
這個Excel報表,因?yàn)閷π盘枖?shù)據(jù)的展示重新進(jìn)行了編排,所以看上去更加美觀了,整個報表只需要一頁。這樣一個報表我想已經(jīng)能夠滿足很大一部分項(xiàng)目的使用需求了。然而如你所見,它的創(chuàng)建過程其實(shí)非常簡單:制作模板、一個VI搞定。
5)使用VI創(chuàng)建報表
下面這個代碼,使用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)建并保存報表。
在調(diào)用Create Report時,我們制定了使用4)中創(chuàng)建的Excel模板。模板不是必須的,但是我覺得模板可以很方便地預(yù)先設(shè)定報表格式,可以簡化不少工作。在有模板的情況下,Append Text to Report等VI可以使用模板中定義的名稱(公式-定義名稱)指定待寫入內(nèi)容在報表中的位置。
產(chǎn)生的報表如下。截屏是包含報表的Excel電子表格,可以看到電子表格的名稱已經(jīng)重新命名為我們在代碼中指定的名稱。
下面這個代碼創(chuàng)建和上面類似的報表,但是不使用Excel模板;另外它除了將報表保存為電子表格,還保存為pdf。
產(chǎn)生的excel報表如下。通過指定行、列值,我們把圖表和數(shù)據(jù)放置到報表中間位置了。
代碼中我們調(diào)用Excel Get ActiveX References獲得了Excel Workbook的ActiveX引用,然后調(diào)用ExportAsFixedFormat方法將報表保存為PDF格式。PDF格式的報表效果如下。
使用Report Generation VIs根據(jù)需要可以創(chuàng)建多種格式和復(fù)雜度的報表,能夠滿足絕大多數(shù)的開發(fā)要求。但是,使用Report Generation VIs創(chuàng)建Word和Excel格式的報表時,以下幾點(diǎn)需要特別注意:
a)計算機(jī)上必須安裝有與文件格式對應(yīng)的Offcie軟件。
要創(chuàng)建Word格式報表,必須安裝有Word軟件;要創(chuàng)建Excel格式報表,必須安裝有Excel軟件。在沒有安裝這些軟件的計算機(jī)上,運(yùn)行產(chǎn)生Word或Excel格式報表的代碼,無法產(chǎn)生報表,并可能會導(dǎo)致軟件運(yùn)行異常。
b)Office的版本需要是LabVIEW支持的版本。
c)32位的LabVIEW只能完美支持32位的Office。64位的LabVIEW能夠支持64位的Office,是否能夠完美支持32位的Office我沒有測試過。32位的LabVIEW+64位的Office,會導(dǎo)致出現(xiàn)報表不能保存、保存報表時LabVIEW崩潰退出等問題。
d)如果不能保存報表、又不報任何錯誤,可以嘗試下面這個方法。
在“C:Program Files (X86)National InstrumentsLabVIEW 2022vi.libaddons_office_exclsub.llb”路徑下找到“Excel_Save_Workbook.vi”,打開可以看見一個灰色的調(diào)用節(jié)點(diǎn),右鍵選擇Relink,然后保存。
Relink之后的變化:
借助Report Generation VIs生成報表需要安裝有Office軟件,需要Office的版本是LabVIEW支持的,如果是32位的LabVIEW則不能使用64位的Office,這些條件在目標(biāo)機(jī)器上是不一定能夠滿足的,計算機(jī)更新或維護(hù)后Office版本可能也會有變化。
有沒有辦法可以既能生成Word或Excel格式報表,又不依賴Office軟件呢?我們可以使用下面介紹的工具。
3.Viewpoint Xlsx Toolkit/Viewpoint Docx Toolkit
從名稱就可以看出來,這兩個插件一個負(fù)責(zé)產(chǎn)生Excel格式的報表,另一個負(fù)責(zé)產(chǎn)生Word格式的報表。與Report Generation VIs不同的時,它們不需要部署的計算機(jī)上安裝有Excel或Word軟件。
這兩個插件都可以在VIPM里找到。我們以Viewpoint Docx Toolkit為例,說明一下怎么生成word報表。
這個插件不是免費(fèi)的,但是我覺得很便宜。一個License的價格是1865元,只需要開發(fā)端授權(quán),使用該插件開發(fā)的功能可以免費(fèi)部署到任意臺計算機(jī)上,與每臺應(yīng)用端部署Office的成本比起來是不是很優(yōu)惠?
安裝好之后,我們可以在Programming分類下找到Viewpoint Docx Toolkit。
下面的代碼使用Viewpoint Docx Toolkit提供的API函數(shù)創(chuàng)建word報表。
創(chuàng)建的速度非???,比使用Report Generation VIs創(chuàng)建報表要迅速得多,而且不需要計算機(jī)上安裝有Office軟件。創(chuàng)建好的報表如下。
好了,以上是關(guān)于LabVIEW里快速創(chuàng)建報表的一些介紹,希望能夠幫助到大家。因?yàn)槭褂肙ffice的ActiveX創(chuàng)建報表,都比上面的方法復(fù)雜,就不詳細(xì)說明了。文章如有不對的地方歡迎大家指正。
-
LabVIEW
+關(guān)注
關(guān)注
1970文章
3654瀏覽量
323267 -
編程
+關(guān)注
關(guān)注
88文章
3614瀏覽量
93685 -
Excel
+關(guān)注
關(guān)注
4文章
218瀏覽量
55517 -
報表
+關(guān)注
關(guān)注
0文章
18瀏覽量
9369
原文標(biāo)題:談?wù)凩abVIEW怎么事半功倍出報表
文章出處:【微信號:傳感測控物聯(lián)網(wǎng),微信公眾號:傳感測控物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論