0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在LabVIEW中讀取報(bào)表內(nèi)容

華穗科技 ? 來(lái)源:華穗科技 ? 作者:華穗科技 ? 2022-12-09 10:57 ? 次閱讀

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

73fb4e1c-776a-11ed-8abf-dac502259ad0.png

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位版本之間的兼容性供大家參考:

74311d76-776a-11ed-8abf-dac502259ad0.png

三、 讀取Excel報(bào)表內(nèi)容1.讀取帶分隔符電子表格VI

利用LabVIEW文件IO中的“讀取帶分隔符電子表格”VI可以讀取以分隔符分隔的Excel報(bào)表,下圖為在LabVIEW中使用讀取帶分隔符電子表格VI讀取Excel報(bào)表的示例:

7471713c-776a-11ed-8abf-dac502259ad0.png

2.讀取文本文件使用文件I/O中的“讀取文本文件”函數(shù)也可以直接讀取以分隔符分隔的Excel報(bào)表,下圖為在LabVIEW中使用“讀取文本文件”函數(shù)讀取Excel報(bào)表的示例:

7493fa0e-776a-11ed-8abf-dac502259ad0.png

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如下圖所示:

74b0d156-776a-11ed-8abf-dac502259ad0.png

打開(kāi)這個(gè)VI到底層可以看到它走的是ActiveX接口,相比于前兩種方式,這種方式對(duì)大家來(lái)說(shuō)可能會(huì)比較陌生一些,感興趣的小伙伴可以嘗試一下。使用該方式讀取Excel報(bào)表代碼如下圖所示:

74cc8c70-776a-11ed-8abf-dac502259ad0.png

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)表的代碼示例:

74e8b22e-776a-11ed-8abf-dac502259ad0.png

這段代碼理解起來(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è)常量,如下圖所示:

750238d4-776a-11ed-8abf-dac502259ad0.png

注意此時(shí)創(chuàng)建出的句柄常量名稱為“自動(dòng)化引用句柄”,接下來(lái)需要右鍵該常量然后點(diǎn)擊選擇ActiveX類,將下拉列表拉至底部選擇瀏覽,如下圖所示:

7559a876-776a-11ed-8abf-dac502259ad0.png

然后在彈出窗口的“類型庫(kù)”下拉列表中找到“Mricrosoft Word 16.0 Object Library Version 8.7”(不同版本的LabVIEW及報(bào)表工具包,版本號(hào)可能不同)如下圖所示:

757491d6-776a-11ed-8abf-dac502259ad0.png

最后在“對(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è)常量即可。

75a91b9a-776a-11ed-8abf-dac502259ad0.png

2.關(guān)于錯(cuò)誤Error-3005

小伙伴如果使用前面介紹的第一種尋找“Word._Application”的方法可以在第二步“選擇ActiveX類”和最后一步選擇“對(duì)象”時(shí)發(fā)現(xiàn)有“Word._Application”,如下圖所示:

75dceed4-776a-11ed-8abf-dac502259ad0.png

75eeca8c-776a-11ed-8abf-dac502259ad0.png

但是如果直接選這兩處的引用,運(yùn)行示例程序時(shí)會(huì)報(bào)錯(cuò)Error-3005,如下圖所示:

7604942a-776a-11ed-8abf-dac502259ad0.png

該錯(cuò)誤的原因是某些情況下,ActiveX對(duì)象的名稱會(huì)改變。為了修正,所以必須重新插入ActiveX對(duì)象,而方法一中就相當(dāng)于給它修正為重新插入的ActiveX對(duì)象了。下面,請(qǐng)大家看看使用這種方法讀取Word報(bào)表文本內(nèi)容的效果:

762e367c-776a-11ed-8abf-dac502259ad0.png

重點(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ì)哦。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 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)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    labview2015使用Excel報(bào)表程序打包生成后打開(kāi)程序要選一個(gè)vi才能使用,否則軟件就會(huì)報(bào)錯(cuò),這是什么問(wèn)題?

    labview2015使用Excel報(bào)表程序打包生成后打開(kāi)程序要選一個(gè)vi才能使用,否則軟件就會(huì)報(bào)錯(cuò)。這是什么問(wèn)題?
    發(fā)表于 12-09 16:14

    labview創(chuàng)建DIAdem報(bào)表的具體方法

    求一份用labview創(chuàng)建DIAdem報(bào)表的具體方法
    發(fā)表于 11-27 14:31

    YOLOv6在LabVIEW的推理部署(含源碼)

    YOLOv6 是美團(tuán)視覺(jué)智能部研發(fā)的一款目標(biāo)檢測(cè)框架,致力于工業(yè)應(yīng)用。如何使用python進(jìn)行該模型的部署,官網(wǎng)已經(jīng)介紹的很清楚了,但是對(duì)于如何在LabVIEW實(shí)現(xiàn)該模型的部署,筆者目前還沒(méi)有看到
    的頭像 發(fā)表于 11-06 16:07 ?323次閱讀
    YOLOv6在<b class='flag-5'>LabVIEW</b><b class='flag-5'>中</b>的推理部署(含源碼)

    Modbus協(xié)議的讀取保持寄存器值

    功能碼用于讀取從設(shè)備保持寄存器的內(nèi)容,不支持廣播模式。消息頓中指定了需要讀取的保持寄存器的起始地址和數(shù)目。而保持寄存器各地址的具體內(nèi)容和意
    的頭像 發(fā)表于 10-30 10:54 ?1502次閱讀

    何在Altium Designer快速定位器件

    想知道如何在Altium Designer快速定位器件嘛?
    的頭像 發(fā)表于 10-12 09:28 ?3493次閱讀
    如<b class='flag-5'>何在</b>Altium Designer<b class='flag-5'>中</b>快速定位器件

    LABVIEW報(bào)表創(chuàng)建工具遇到的一個(gè)問(wèn)題,麻煩大佬幫忙看一下

    報(bào)表插入之后打開(kāi)EXCEL選定的保存位置會(huì)提示如下 此時(shí)無(wú)論點(diǎn)是或者否保存的數(shù)據(jù)都會(huì)消失,仔細(xì)觀察之后發(fā)現(xiàn)創(chuàng)建報(bào)表創(chuàng)建的EXCEL進(jìn)程,無(wú)法被處置報(bào)表VI關(guān)閉。此時(shí)手動(dòng)點(diǎn)擊EXCEL保存的表格就會(huì)
    發(fā)表于 10-09 10:03

    labview如何實(shí)現(xiàn)字符串選擇輸出

    LabVIEW實(shí)現(xiàn)字符串選擇輸出是一項(xiàng)常見(jiàn)的任務(wù),它涉及到字符串處理、條件判斷和用戶界面設(shè)計(jì)等多個(gè)方面。由于LabVIEW是一種圖形化編程語(yǔ)言,其編程方式與傳統(tǒng)的文本編程語(yǔ)言有所不同,因此實(shí)現(xiàn)
    的頭像 發(fā)表于 09-04 15:44 ?977次閱讀

    何在反激式拓?fù)?b class='flag-5'>中實(shí)現(xiàn)軟啟動(dòng)

    電子發(fā)燒友網(wǎng)站提供《如何在反激式拓?fù)?b class='flag-5'>中實(shí)現(xiàn)軟啟動(dòng).pdf》資料免費(fèi)下載
    發(fā)表于 09-04 11:09 ?0次下載
    如<b class='flag-5'>何在</b>反激式拓?fù)?b class='flag-5'>中</b>實(shí)現(xiàn)軟啟動(dòng)

    何在MCS實(shí)現(xiàn)ADC數(shù)據(jù)讀取?

    周期使能MCS0的CH0和CH1,CH0可以正常被多次運(yùn)行,但是CH1僅被執(zhí)行一次;如果需要實(shí)現(xiàn)多通道的運(yùn)行,需要怎么處理呢? 在CH0通過(guò)AEI總線讀取CH0的AD數(shù)據(jù),AD C采樣觸發(fā)正常
    發(fā)表于 07-24 07:59

    labview實(shí)例源碼之控壓取樣系統(tǒng)

    labview源碼,包含報(bào)表、曲線、通訊等
    發(fā)表于 06-06 11:23 ?1次下載

    LabVIEW報(bào)表生成

    請(qǐng)問(wèn)LabVIEW如何實(shí)現(xiàn)通過(guò)對(duì)Excel表格的讀取后,選擇特定列生成word文檔,文檔包括數(shù)據(jù)和圖像
    發(fā)表于 03-18 00:25

    如何讀取TC397所有必要的內(nèi)存區(qū)域并將內(nèi)容保存為十六進(jìn)制文件?

    我正在使用三板上的 TC397 控制器。 控制器已經(jīng)用一些軟件刷新了,但是,不幸的是,該軟件的十六進(jìn)制文件丟失了。 我需要讀取TC397所有必要的內(nèi)存區(qū)域并將內(nèi)容保存為十六進(jìn)制文件,以便將來(lái)
    發(fā)表于 01-25 06:40

    求助:labview報(bào)表excel出現(xiàn)閃屏

    我在LABVIEW程序里建了一個(gè)EXCEL報(bào)表程序,報(bào)表的窗口狀態(tài)是no change。如果我不打開(kāi)excel,就不會(huì)彈出所查的表;但是當(dāng)我打開(kāi)任意一個(gè)不相關(guān)的excel表格之后,查找的excel
    發(fā)表于 01-17 17:00

    關(guān)于LABVIEW報(bào)表功能導(dǎo)致程序中止出現(xiàn)卡頓

    我在labview的while循環(huán)里面放入EXCEL報(bào)表功能(向EXCEL寫入數(shù)據(jù)),每執(zhí)行一次循環(huán)就會(huì)往EXCEL寫入數(shù)據(jù); 在程序執(zhí)行報(bào)表的時(shí)候,如果需要停止程序運(yùn)行,要反復(fù)多次點(diǎn)擊前面板左上角的中止按鈕(紅色中止程序的按鈕
    發(fā)表于 01-16 21:02

    labview visa讀取數(shù)據(jù)越來(lái)越慢

    的問(wèn)題。下面,我將詳細(xì)解釋可能導(dǎo)致此問(wèn)題的原因,并提供一些解決方法。 數(shù)據(jù)緩沖區(qū)過(guò)?。?在LabVIEW執(zhí)行VISA讀取操作時(shí),系統(tǒng)會(huì)先將數(shù)據(jù)讀入緩沖區(qū),然后再?gòu)木彌_區(qū)
    的頭像 發(fā)表于 01-08 10:00 ?3218次閱讀