衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在LabVIEW中讀取報表內容

華穗科技 ? 來源:華穗科技 ? 作者:華穗科技 ? 2022-12-09 10:57 ? 次閱讀

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

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

2. 關于Office版本和報表工具包版本選擇

同樣需要注意的是Office的版本(32位/64位)要和報表生成工具包的版本對齊,并且32位和64位的報表生成工具包對Office的版本支持不同,比如2019的報表生成工具包32位支持Microsoft Office XP(32 Bit),而64位工具包就不支持。

NI在很早之前發布過說明文檔《Report Generation Toolkit和Micriosoft Office的兼容性》,但是里面列舉的版本比較老,新版本就只能在報表工具包的Readme中找到兼容性說明,小編在這里整理了一些32位版本之間的兼容性供大家參考:

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

三、 讀取Excel報表內容1.讀取帶分隔符電子表格VI

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

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

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

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

3.Excel Get Data.VI

LabVIEW報表工具包中提供了一個讀取Excel的VI,可以獲取Excel報表中的單元格內容,缺點是該VI一次只能獲取一個單元格中的數據,要使用這種方式讀取報表的內容就必須要知道報表中表格究竟有幾行幾列,然后使用For循環輪詢讀取,這樣執行效率會比較低;優點是相比于前面兩種方法,它支持所有Excel報表格式,不拘泥于以分隔符分隔的報表格式。該VI如下圖所示:

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

打開這個VI到底層可以看到它走的是ActiveX接口,相比于前兩種方式,這種方式對大家來說可能會比較陌生一些,感興趣的小伙伴可以嘗試一下。使用該方式讀取Excel報表代碼如下圖所示:

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

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

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

這段代碼理解起來并不是很不難,難的是找到“Word._Application”這個長得像靜態引用的家伙,對于不熟悉ActiveX的開發者來說很難找到,在編寫代碼的過程中小編也遇到了一些問題,接下來和大家一起分享其中的內容~1.尋找神秘的“Word._Application”引用句柄其實要想找到這個引用有以下兩種方法: 第一種是在LabVIEW自帶的ActiveX工具包中(函數選板>>互聯接口>>ActiveX)找到“打開自動化”函數接口,找到這個函數后在它的輸入端“自動化引用句柄“右鍵創建一個常量,如下圖所示:

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

注意此時創建出的句柄常量名稱為“自動化引用句柄”,接下來需要右鍵該常量然后點擊選擇ActiveX類,將下拉列表拉至底部選擇瀏覽,如下圖所示:

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

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

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

最后在“對象”選擇框中選擇Application(Word.Application.16),點擊確定后就可以看到常量名已經變成了我們需要的“Word._Application”。 第二種方式就是在函數選板>>報表生成>>Word Specific>>Word Advanced找到“Word Get ActiveX Reference.VI”,將此VI拖到程序框圖中,然后在“Word._Application”這個輸出端創建一個常量即可。

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

2.關于錯誤Error-3005

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

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

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

但是如果直接選這兩處的引用,運行示例程序時會報錯Error-3005,如下圖所示:

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

該錯誤的原因是某些情況下,ActiveX對象的名稱會改變。為了修正,所以必須重新插入ActiveX對象,而方法一中就相當于給它修正為重新插入的ActiveX對象了。下面,請大家看看使用這種方法讀取Word報表文本內容的效果:

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

重點回顧:1、LabVIEW、報表工具包、Office要注意版本對齊為32bit或64bit;2、為了避免錯誤Error-3005,要插入修正后的ActiveX對象; 以上就是本期分享的所有內容啦,大家感興趣的話可以自行創建VI試一試,如果有遺漏的地方歡迎各位小伙伴對我們提出建議和補充,華穗的工程師們始終歡迎大家和我們一起交流LabVIEW的編程知識與技巧!

對NI產品和軟件開發知識感興趣的工程師們,歡迎持續關注、留言和點贊,也可以私信小編各位的技術困惑和技術需求,以獲取參加免費線下培訓和技術交流的機會哦。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • LabVIEW
    +關注

    關注

    1977

    文章

    3657

    瀏覽量

    325623
  • 工具包
    +關注

    關注

    0

    文章

    47

    瀏覽量

    9564
  • 華穗科技
    +關注

    關注

    1

    文章

    12

    瀏覽量

    123

原文標題:教程 | 使用LabVIEW讀取報表內容

文章出處:【微信號:華穗科技,微信公眾號:華穗科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ADS1158如何在自動掃描模式下,用通道讀命令,順序讀取通道轉換數值?

    ADS1158如何在自動掃描模式下,用通道(寄存器格式)讀命令,順序讀取通道轉換數值,我現在無論是采用脈沖命令方式還是START為HIGH轉換的方式讀取的通道的順序都是亂的;
    發表于 01-17 06:54

    labview2015使用Excel報表程序打包生成后打開程序要選一個vi才能使用,否則軟件就會報錯,這是什么問題?

    labview2015使用Excel報表程序打包生成后打開程序要選一個vi才能使用,否則軟件就會報錯。這是什么問題?
    發表于 12-09 16:14

    labview創建DIAdem報表的具體方法

    求一份用labview創建DIAdem報表的具體方法
    發表于 11-27 14:31

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

    YOLOv6 是美團視覺智能部研發的一款目標檢測框架,致力于工業應用。如何使用python進行該模型的部署,官網已經介紹的很清楚了,但是對于如何在LabVIEW實現該模型的部署,筆者目前還沒有看到
    的頭像 發表于 11-06 16:07 ?401次閱讀
    YOLOv6在<b class='flag-5'>LabVIEW</b><b class='flag-5'>中</b>的推理部署(含源碼)

    Modbus協議的讀取保持寄存器值

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

    何在Altium Designer快速定位器件

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

    LABVIEW報表創建工具遇到的一個問題,麻煩大佬幫忙看一下

    報表插入之后打開EXCEL選定的保存位置會提示如下 此時無論點是或者否保存的數據都會消失,仔細觀察之后發現創建報表創建的EXCEL進程,無法被處置報表VI關閉。此時手動點擊EXCEL保存的表格就會
    發表于 10-09 10:03

    labview如何實現字符串選擇輸出

    LabVIEW實現字符串選擇輸出是一項常見的任務,它涉及到字符串處理、條件判斷和用戶界面設計等多個方面。由于LabVIEW是一種圖形化編程語言,其編程方式與傳統的文本編程語言有所不同,因此實現
    的頭像 發表于 09-04 15:44 ?1082次閱讀

    何在反激式拓撲實現軟啟動

    電子發燒友網站提供《如何在反激式拓撲實現軟啟動.pdf》資料免費下載
    發表于 09-04 11:09 ?0次下載
    如<b class='flag-5'>何在</b>反激式拓撲<b class='flag-5'>中</b>實現軟啟動

    何在FPGA實現隨機數發生器

    分享如何在Xilinx Breadboardable Spartan-7 FPGA, CMOD S7實現4位偽隨機數發生器(PRNGs)。
    的頭像 發表于 08-06 11:20 ?769次閱讀
    如<b class='flag-5'>何在</b>FPGA<b class='flag-5'>中</b>實現隨機數發生器

    何在MCS實現ADC數據讀取

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

    請問cmakelists的變量如何在程序中使用?

    大家好, 我有個問題請教,cmakelists.txt的變量如何在程序中使用?比如以下cmakelists.txt文件的PROJECT_VER變量,我如何在c程序中使用?試了很多辦
    發表于 06-11 07:34

    labview實例源碼之控壓取樣系統

    labview源碼,包含報表、曲線、通訊等
    發表于 06-06 11:23 ?1次下載

    STM32片上flash能否讀取正在運行的代碼段內容

    如題 小弟想請教下大家 STM32片上flash的讀取問題。舉個例子: 函數的功能是 讀取片上flash 0x0800_1000~0x0800_2000的存儲內容 函數存儲在flash的 0x0800_1000~0x0800_2
    發表于 04-16 07:22

    LabVIEW報表生成

    請問LabVIEW如何實現通過對Excel表格的讀取后,選擇特定列生成word文檔,文檔包括數據和圖像
    發表于 03-18 00:25
    百家乐登封代理| 大发888出纳柜台| 网上百家乐分析软件| 属虎与属鼠做生意好吗| 做生意摆放什么财神爷| 百家乐官网是真人发牌吗| 百家乐胜率被控制| 百家乐不倒翁缺点| 百家乐技巧公司| 百家乐五湖四海娱乐场开户注册| 24山安葬择日吉凶| 百家乐筹码方形| 同乐城百家乐娱乐城| 大发888老l| 和记国际娱乐| 浮梁县| 喜达国际| 挖掘百家乐官网赢钱秘籍| 百家乐官网翻天粤语版qvod| 百家乐官网赌场群| 24山是那二十四山| 百家乐下| 高额德州扑克第七季| 安顺市| 哪个百家乐官网投注比较好| 中国百家乐官网的玩法技巧和规则| 做生意用的 风水上最好的尺寸有| 温州市百家乐鞋业有限公司| 大发888娱乐场网址| 皇冠足球網| 百家乐官网公式与赌法| 百家乐官网电脑赌博| 百家乐官网下载| 威尼斯人娱乐网赌| 根河市| 君怡百家乐官网的玩法技巧和规则| 百家乐赌博机怎么玩| 大发888真人真钱网址| 盘山县| 百家乐视频多开器| 大发888合作伙伴|