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

    关注

    1961

    文章

    3652

    浏览量

    322183
  • 工具包
    +关注

    关注

    0

    文章

    46

    浏览量

    9521
  • 华穗科技
    +关注

    关注

    1

    文章

    11

    浏览量

    75

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

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

收藏 人收藏

    评论

    相关推荐

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

    YOLOv6 是美团视觉智能部研发的一款目标检测框架,致力于工业应用。如何使用python进行该模型的部署,官网已经介绍的很清楚了,但是对于如何在LabVIEW实现该模型的部署,笔者目前还没有看到
    的头像 发表于 11-06 16:07 153次阅读
    YOLOv6在<b class='flag-5'>LabVIEW</b><b class='flag-5'>中</b>的推理部署(含源码)

    LABVIEW报表创建工具遇到的一个问题,麻烦大佬帮忙看一下

    报表插入之后打开EXCEL选定的保存位置会提示如下 此时无论点是或者否保存的数据都会消失,仔细观察之后发现创建报表创建的EXCEL进程,无法被处置报表VI关闭。此时手动点击EXCEL保存的表格就会
    发表于 10-09 10:03

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

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

    LabVIEW报表生成

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

    求助:labview报表excel出现闪屏

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

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

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

    labview visa读取数据越来越慢

    的问题。下面,我将详细解释可能导致此问题的原因,并提供一些解决方法。 数据缓冲区过小: 在LabVIEW执行VISA读取操作时,系统会先将数据读入缓冲区,然后再从缓冲区
    的头像 发表于 01-08 10:00 2892次阅读

    labview生成exe后报表不能用

    的计算机上运行。然而,在将LabVIEW程序生成exe后,有用户反映说报表不能使用的问题。 首先,需要了解LabVIEW中生成exe的过程。当我们使用LabVIEW开发一个程序后,可以
    的头像 发表于 01-04 15:59 2009次阅读

    LabVIEW怎样读取TXT某一行

    LabVIEW是一款面向数据采集、分析和控制的图形化编程环境。通过使用LabVIEW,用户可以编写程序,实现自动化控制、数据可视化和报告生成等功能。读取TXT文件的某一行在LabVIEW
    的头像 发表于 01-04 11:28 2571次阅读

    labview读取三菱plc寄存器内容

    如何使用LabVIEW读取三菱PLC的寄存器内容,并提供一些实例代码和注意事项。 首先,我们需要了解PLC寄存器的基本概念。PLC寄存器是一种用于存储数据的内部变量,被用于传输和保存信息。在三菱PLC
    的头像 发表于 12-27 16:31 2068次阅读

    labview读取excel数据的每个数据

    如何使用 LabVIEW 读取 Excel 数据,并对其中的每个数据进行处理。 Excel 是一种常用的电子表格软件,广泛用于数据存储和分析。在实际的工程项目中,常常需要从 Excel 读取
    的头像 发表于 12-26 11:19 3468次阅读

    labview生成专业的测试报表工具

    Labview软件免费的报表生成工具
    发表于 12-21 09:57 32次下载

    何在LabVIEW清晰加载图片呢?

    有开发者提出,在使用LabVIEW开发图片加载显示程序时,为什么明明看着很清晰的图片,LabVIEW加载显示后就变得粗糙,线条不流畅。
    的头像 发表于 12-20 09:08 1585次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>LabVIEW</b><b class='flag-5'>中</b>清晰加载图片呢?

    ad7386执行硬复位后,读取报警寄存器和REG1均为0xFFFF的原因?

    执行硬复位后,读取报警寄存器和REG1均为0xFFFF;重复硬复位,SETUP_F始终保持设置错误(1)。ADC目前采用内部REF,通信接口与用户手册的参考电路设计相同;四路模拟通道由5v供电的运放
    发表于 12-04 07:39

    何在std rms模块读取相关电平值?

    、在编译保存的头文件也无法找到相关的电平读取地址。 请问我该如何在std rms模块读取相关电平值?
    发表于 11-30 07:47