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
    +关注

    关注

    2013

    文章

    3681

    浏览量

    344371
  • 工具包
    +关注

    关注

    0

    文章

    48

    浏览量

    9856
  • 华穗科技
    +关注

    关注

    2

    文章

    15

    浏览量

    234

原文标题:教程 | 使用LabVIEW读取报表内容

文章出处:【微信号:华穗科技,微信公众号:华穗科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    何在VS code配置Zephyr集成开发环境

    上一篇文章介绍了如何在VS code中使用瑞萨官方插件为RA芯片创建项目与项目调试,相信大家对RA在VS code的开发有了基础的了解。
    的头像 发表于 11-05 14:46 1091次阅读
    如<b class='flag-5'>何在</b>VS code<b class='flag-5'>中</b>配置Zephyr集成开发环境

    使用ulog 写入日志到文件系统,无法使用cat命令读取文件内容怎么解决?

    1.我使用ulog+littlefs写入日志,日志正常写入,但是没法使用cat指令读取文件内容失败,必须关掉ulog,才能读取日志文件显示的内容,发现上次日志是正常写入的。 2.调试发
    发表于 10-13 06:12

    labview怎么读取UTF-16 LE 文本数据

    各位大佬 请问labview怎么读取UTF-16 LE 文本数据 直接读数据出来会有空格 但是空格无法删除,请问怎么获取UTF-16 LE格式数据
    发表于 10-10 11:23

    何在 buildroot 的 rootfs 显示当前目录?

    何在 buildroot 的 rootfs 显示当前目录?
    发表于 09-03 07:02

    何在裸机环境运行KleidiAI微内核

    ,对 KleidiAI 进行了简要概述,并附有相关指南链接,其中详细说明了在 Linux 环境运行 KleidiAI 矩阵乘法 (matmul) 微内核的分步操作,这份指南内容详实且极易上手。而本篇内容则将
    的头像 发表于 08-08 15:16 3630次阅读
    如<b class='flag-5'>何在</b>裸机环境<b class='flag-5'>中</b>运行KleidiAI微内核

    倾斜仪测量数据的读取与分析指南

    在结构物安全监测,倾斜仪的数据精准度直接影响工程安全评估结果。南京峟思了解到很多用户想了解倾斜仪的数据读取和分析相关内容,那么下面我们将结合本公司的倾斜仪产品给大家做出具体的介绍:一、数据
    的头像 发表于 08-06 14:50 543次阅读
    倾斜仪测量数据的<b class='flag-5'>读取</b>与分析指南

    LabVIEW的详细简介和应用(文末免费分享LabVIEW相关资料合集)

    LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而
    的头像 发表于 05-22 11:43 2171次阅读
    <b class='flag-5'>LabVIEW</b>的详细简介和应用(文末免费分享<b class='flag-5'>LabVIEW</b>相关资料合集)

    labview tcp读取数据不完整

    *附件:未命名 1.rar 我用labview tcp协议读取电源的电压,返回的数据正常应该是这样的: 00 00 00 00 00 07 01 03 04 00 00 27 10 但实际返回是这样
    发表于 04-29 09:58

    何在Simulink启用ADC校准?

    何在 Simulink 启用 ADC 校准? V4.2.0 产品发布报告指出,它在块可用。但我在 ADC 配置块找不到任何选项。
    发表于 03-31 07:50

    解锁TSMaster fifo函数:报文读取的高效方法

    前言:TSMaster目前有两种读取报文的模式:回调函数模式和fifo模式。fifo函数是TSMaster近期新增的函数,本文将重点介绍fifo模块。关于回调函数的使用方法可以参考帮助模块的《快速
    的头像 发表于 03-14 20:04 949次阅读
    解锁TSMaster fifo函数:报文<b class='flag-5'>读取</b>的高效方法

    DLPC3479固件是否写有关于DMD温度读取以及过热保护的内容,如果有的话温度读取和过热保护的逻辑是什么?

    你好 我想询问一下,DLPC3479固件是否写有关于DMD温度读取以及过热保护的内容,如果有的话温度读取和过热保护的逻辑是什么。
    发表于 02-17 08:05

    DLPC3479固件是否写有关于DMD温度读取以及过热保护的内容,如果有的话温度读取和过热保护的逻辑是什么?

    你好 我想询问一下,DLPC3479固件是否写有关于DMD温度读取以及过热保护的内容,如果有的话温度读取和过热保护的逻辑是什么。
    发表于 02-17 07:35

    无缝连接Labview——国产DAQ软件 #电路知识 #DAQ #Labview

    LabVIEW
    西安阿尔泰电子科技发展有限公司
    发布于 :2025年01月21日 13:46:29

    ADS1158如何在自动扫描模式下,用通道读命令,顺序读取通道转换数值?

    ADS1158如何在自动扫描模式下,用通道(寄存器格式)读命令,顺序读取通道转换数值,我现在无论是采用脉冲命令方式还是START为HIGH转换的方式读取的通道的顺序都是乱的;
    发表于 01-17 06:54

    何在播放视频过程插入音频

    ZDP14x0是一款基于开源GUI引擎的图像显示专用驱动芯片,可以通过串口或者SPI与其他芯片通信,且能播放视频。本文将介绍如何在播放视频过程插入音频。
    的头像 发表于 12-26 11:13 1962次阅读
    如<b class='flag-5'>何在</b>播放视频过程<b class='flag-5'>中</b>插入音频