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