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

    关注

    1974

    文章

    3656

    浏览量

    324275
  • 工具包
    +关注

    关注

    0

    文章

    47

    浏览量

    9551
  • 华穗科技
    +关注

    关注

    1

    文章

    12

    浏览量

    117

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

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

收藏 人收藏

    评论

    相关推荐

    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 329次阅读
    YOLOv6在<b class='flag-5'>LabVIEW</b><b class='flag-5'>中</b>的推理部署(含源码)

    Modbus协议的读取保持寄存器值

    功能码用于读取从设备保持寄存器的内容,不支持广播模式。消息顿中指定了需要读取的保持寄存器的起始地址和数目。而保持寄存器各地址的具体内容和意
    的头像 发表于 10-30 10:54 1588次阅读

    何在Altium Designer快速定位器件

    想知道如何在Altium Designer快速定位器件嘛?
    的头像 发表于 10-12 09:28 3637次阅读
    如<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 991次阅读

    何在反激式拓扑实现软启动

    电子发烧友网站提供《如何在反激式拓扑实现软启动.pdf》资料免费下载
    发表于 09-04 11:09 0次下载
    如<b class='flag-5'>何在</b>反激式拓扑<b class='flag-5'>中</b>实现软启动

    何在MCS实现ADC数据读取

    周期使能MCS0的CH0和CH1,CH0可以正常被多次运行,但是CH1仅被执行一次;如果需要实现多通道的运行,需要怎么处理呢? 在CH0通过AEI总线读取CH0的AD数据,AD C采样触发正常
    发表于 07-24 07:59

    labview实例源码之控压取样系统

    labview源码,包含报表、曲线、通讯等
    发表于 06-06 11:23 1次下载

    LabVIEW报表生成

    请问LabVIEW如何实现通过对Excel表格的读取后,选择特定列生成word文档,文档包括数据和图像
    发表于 03-18 00:25

    如何读取TC397所有必要的内存区域并将内容保存为十六进制文件?

    我正在使用三板上的 TC397 控制器。 控制器已经用一些软件刷新了,但是,不幸的是,该软件的十六进制文件丢失了。 我需要读取TC397所有必要的内存区域并将内容保存为十六进制文件,以便将来
    发表于 01-25 06:40

    求助:labview报表excel出现闪屏

    我在LABVIEW程序里建了一个EXCEL报表程序,报表的窗口状态是no change。如果我不打开excel,就不会弹出所查的表;但是当我打开任意一个不相关的excel表格之后,查找的excel
    发表于 01-17 17:00

    关于LABVIEW报表功能导致程序中止出现卡顿

    我在labview的while循环里面放入EXCEL报表功能(向EXCEL写入数据),每执行一次循环就会往EXCEL写入数据; 在程序执行报表的时候,如果需要停止程序运行,要反复多次点击前面板左上角的中止按钮(红色中止程序的按钮
    发表于 01-16 21:02

    怎么简单实现由Labview读取的串口数据自增写入mysql5.7数据库

    怎么简单实现由Labview读取的串口数据自增写入mysql5.7数据库? 已实现:串口数据的接收处理 mysql5.7的安装(已测试数据库正常运行) 愿付费解决此问题(QQ:84295699)感谢
    发表于 01-11 22:05