LabVIEW中自帶的報表工具包為我們提供了用于Word、Excel等報表操作的API,細心的小伙伴應該已經發現了報表工具包中的API基本都是生成、創建和寫入報表這一類的,少有讀取報表的API。
這是因為絕大多數需要報表操作的應用場景中都是按照測試流程和測試項生成測試報表,很少有需要從報表中讀取的需求,那么如果碰到這樣的應用場景我們應該如何使用LabVIEW讀取報表中的內容?
本期小編就探索一下如何在LabVIEW中讀取報表內容,快帶上小伙伴一起來學習一下吧!
本文教程:
使用LabVIEW讀取報表內容
一、軟件環境
系統:Win10 64位 軟件:LabVIEW2020 SP1 32bit、LabVIEW Report Generation工具包2020 32位、Office 2019 32位
二、 兼容軟件版本說明
1. 關于LabVIEW版本和報表工具包版本選擇
其實按照NI的一貫風格,使用同一個版本號的NI軟件之間一般不會出現兼容性問題,需要注意的是這個工具包有64位和32位的區別,使用LabVIEW和工具包時注意版本對齊即可。 從LabVIEW2009開始報表工具包都會集成在LabVIEW的安裝包中,當電腦中安裝了Office后,安裝LabVIEW時會默認勾選此工具包并安裝,如果發現沒有安裝報表工具包,只需在官網下載對應版本補裝即可。 下面是該工具包的下載鏈接和頁面:https://www.ni.com/zh-cn/support/downloads/software-products/download.labview-report-generation-toolkit.html
2. 關于Office版本和報表工具包版本選擇
同樣需要注意的是Office的版本(32位/64位)要和報表生成工具包的版本對齊,并且32位和64位的報表生成工具包對Office的版本支持不同,比如2019的報表生成工具包32位支持Microsoft Office XP(32 Bit),而64位工具包就不支持。
NI在很早之前發布過說明文檔《Report Generation Toolkit和Micriosoft Office的兼容性》,但是里面列舉的版本比較老,新版本就只能在報表工具包的Readme中找到兼容性說明,小編在這里整理了一些32位版本之間的兼容性供大家參考:
三、 讀取Excel報表內容1.讀取帶分隔符電子表格VI
利用LabVIEW文件IO中的“讀取帶分隔符電子表格”VI可以讀取以分隔符分隔的Excel報表,下圖為在LabVIEW中使用讀取帶分隔符電子表格VI讀取Excel報表的示例:
2.讀取文本文件使用文件I/O中的“讀取文本文件”函數也可以直接讀取以分隔符分隔的Excel報表,下圖為在LabVIEW中使用“讀取文本文件”函數讀取Excel報表的示例:
3.Excel Get Data.VI
LabVIEW報表工具包中提供了一個讀取Excel的VI,可以獲取Excel報表中的單元格內容,缺點是該VI一次只能獲取一個單元格中的數據,要使用這種方式讀取報表的內容就必須要知道報表中表格究竟有幾行幾列,然后使用For循環輪詢讀取,這樣執行效率會比較低;優點是相比于前面兩種方法,它支持所有Excel報表格式,不拘泥于以分隔符分隔的報表格式。該VI如下圖所示:
打開這個VI到底層可以看到它走的是ActiveX接口,相比于前兩種方式,這種方式對大家來說可能會比較陌生一些,感興趣的小伙伴可以嘗試一下。使用該方式讀取Excel報表代碼如下圖所示:
4.注意事項
使用前兩種方式讀取Excel報表都要求它是以制表符分隔的格式,如果是通過手動輸入數據(不是使用LabVIEW的寫入帶分隔符電子表格VI)創建的Excel報表,則這兩種方式都將無法正確讀取Excel報表,大家會發現讀取出來的是亂碼。這時必須先將Excel報表保存為以制表符分隔的文本文件(.txt),然后讀取該文本文件內容。而第三種方式沒有格式限制,可以讀取任意格式Excel報表中的內容。
這三種方式的區別在于使用“讀取帶分隔符電子表格”得到的是一個二維字符串數組,從邏輯上來說更接近于Excel中的格式,使用“讀取文本文件”得到的是一段字符串數據,使用“Excel Get Data.VI”得到的是一個單元格的數據字符串。在實際應用的過程中根據自己的需求使用其中某種方式即可。
四、讀取Word報表內容LabVIEW中內置于文件I/O的API可以操作多種數據文件,但都不能用來讀取Word報表中的內容,而LabVIEW中提供了ActiveX接口供開發者們讀取Word報表內容,下圖是在LabVIEW中讀取Word報表的代碼示例:
這段代碼理解起來并不是很不難,難的是找到“Word._Application”這個長得像靜態引用的家伙,對于不熟悉ActiveX的開發者來說很難找到,在編寫代碼的過程中小編也遇到了一些問題,接下來和大家一起分享其中的內容~1.尋找神秘的“Word._Application”引用句柄其實要想找到這個引用有以下兩種方法: 第一種是在LabVIEW自帶的ActiveX工具包中(函數選板>>互聯接口>>ActiveX)找到“打開自動化”函數接口,找到這個函數后在它的輸入端“自動化引用句柄“右鍵創建一個常量,如下圖所示:
注意此時創建出的句柄常量名稱為“自動化引用句柄”,接下來需要右鍵該常量然后點擊選擇ActiveX類,將下拉列表拉至底部選擇瀏覽,如下圖所示:
然后在彈出窗口的“類型庫”下拉列表中找到“Mricrosoft Word 16.0 Object Library Version 8.7”(不同版本的LabVIEW及報表工具包,版本號可能不同)如下圖所示:
最后在“對象”選擇框中選擇Application(Word.Application.16),點擊確定后就可以看到常量名已經變成了我們需要的“Word._Application”。 第二種方式就是在函數選板>>報表生成>>Word Specific>>Word Advanced找到“Word Get ActiveX Reference.VI”,將此VI拖到程序框圖中,然后在“Word._Application”這個輸出端創建一個常量即可。
2.關于錯誤Error-3005
小伙伴如果使用前面介紹的第一種尋找“Word._Application”的方法可以在第二步“選擇ActiveX類”和最后一步選擇“對象”時發現有“Word._Application”,如下圖所示:
但是如果直接選這兩處的引用,運行示例程序時會報錯Error-3005,如下圖所示:
該錯誤的原因是某些情況下,ActiveX對象的名稱會改變。為了修正,所以必須重新插入ActiveX對象,而方法一中就相當于給它修正為重新插入的ActiveX對象了。下面,請大家看看使用這種方法讀取Word報表文本內容的效果:
重點回顧:1、LabVIEW、報表工具包、Office要注意版本對齊為32bit或64bit;2、為了避免錯誤Error-3005,要插入修正后的ActiveX對象; 以上就是本期分享的所有內容啦,大家感興趣的話可以自行創建VI試一試,如果有遺漏的地方歡迎各位小伙伴對我們提出建議和補充,華穗的工程師們始終歡迎大家和我們一起交流LabVIEW的編程知識與技巧!
對NI產品和軟件開發知識感興趣的工程師們,歡迎持續關注、留言和點贊,也可以私信小編各位的技術困惑和技術需求,以獲取參加免費線下培訓和技術交流的機會哦。
審核編輯 :李倩
-
LabVIEW
+關注
關注
1977文章
3657瀏覽量
325623 -
工具包
+關注
關注
0文章
47瀏覽量
9564 -
華穗科技
+關注
關注
1文章
12瀏覽量
123
原文標題:教程 | 使用LabVIEW讀取報表內容
文章出處:【微信號:華穗科技,微信公眾號:華穗科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
ADS1158如何在自動掃描模式下,用通道讀命令,順序讀取通道轉換數值?
labview2015使用Excel報表程序打包生成后打開程序要選一個vi才能使用,否則軟件就會報錯,這是什么問題?
YOLOv6在LabVIEW中的推理部署(含源碼)
![YOLOv6在<b class='flag-5'>LabVIEW</b><b class='flag-5'>中</b>的推理部署(含源碼)](https://file1.elecfans.com//web2/M00/8D/98/wKgZomS-F6iADBs8AADw4J6SGjY218.png)
評論