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