2023年11月30日发(作者:)
船电技术
|
应用研究 Vol.30 No.4 2010.4
LabVIEW中基于ActiveX的报表生成技术研究
付志超
陈馨 张聪 姜波
(中国船舶重工集团公司第712研究所,武汉 430064 )
摘 要:报表生成功能是一个完备的虚拟仪器测试系统的重要组成部分。本文介绍了几种LabVIEW中报表
生成的方法及其特点,重点阐述ActiveX报表生成技术。结合实例详细介绍利用ActiveX生成一份完美的
Word报表。
关键词:LabVIEW ActiveX 报表生成
中图分类号:TP391 文献标识码:A 文章编号:1003-4862 (2010) 04-0060-04
Report Generation Technology Based on ActiveX in LabVIEW
Fu Zhichao, Chen Xin, Zhang Cong, Jiang Bo
( Wuhan Institute of Marine Electric Propulsion, CSIC, Wuhan 430064, China)
Abstract: The function of report generation is an important part of a complete Virtual Instrument system. In
this paper, several methods of report generation based on LabVIEW and their characteristics are introduced,
with the emphasis on the technology that report generation with ActiveX. Combined with detailed examples
of the use of ActiveX, how to generate a perfect Microsoft Word report is introduce.
Key words: LabVIEW; activeX; report generation
1 引言
LabVIEW是一种业界领先的工业标准图形Characters to File,Write to Spreadsheet File等函
化编程工具,主要应用于开发测试、测量与控制
系统。它将软件和各种不同的测量仪器硬件及计文件。其优点是程序简洁,速度快,但缺点也很
算机集成在一起,建立虚拟仪器系统,以形成用明显,无法分段文字、绘制表格、插入图表,报
户自定义的解决方案表样式极为简单。所以,这种方法只能用在对报
[1]
。测试项目完成后,需要
将测量的结果以数据报表、结果通知书报告给客表格式要求不高的场合
户,一份完美的报表能体现出测试项目的能力和
测试系统本身的质量,所以报表生成技术在自动利用LabVIEW中的Report Generation类函
测试项目中比较重要。本文主要讨论LabVIEW数,可以生成LabVIEW的标准报表或HTML网
中报表生成技术,特别是ActiveX生成灵活的页格式报表,这种类型的报表样式比较美观,而
Word报表。
2.1 用File I/O 类函数生成报表
利用LabVIEW中File I/O 类函数,如Write
数来生成报表,生成的报表是ASCII格式的文本
[4,5]
。
2.2 用Report Generation类生成报表
且可以绘制简单规则的表格,可以插入图形,已
经可以满足一般用户的要求。但缺点是不适合制
作样式较为复杂、结构不规则的表格,而且最大
的缺点是报表一旦生成以后,用户很难对数据进
行二次手动修正, 在实际工作中,特别是对于计
量测试部门,这样的报表不适用。
2.3 用Report Generation Toolkit生成报表
Report Generation Toolkit是一个LabVIEW
的功能模块,它可以较好地生成Micorsoft Office
2 几种报表生成方法及特点
下面介绍LabVIEW中几种报表生成的方法,
并比较他们的优缺点和适用场合。
[2,3]
收稿日期: 2009-08-04
作者简介:付志超(1981-),男,工学硕士,工程师,
研究方向:计算机控制及自动测试技术。
60
Vol.30 No.4 2010.4 应用研究
船电技术
|
支持的报表,是最好的报表生成方案。但是这个端。客户端和服务器端互相独立存在,但是通过
模块并未集成在LabVIEW中,必须另外单独购客户端调用服务器端提供的ActiveX对象,它们
买,这无形中增加了软件开发成本,并不是一个之间能够实现信息共享。ActiveX对象包含客户
性价比很高的解决方案。 端能够访问的属性和方法。这里的方法和属性与
2.4 将前面板设计成报表
该方法是做一个子VI,将其前面板设计成准属性就是一些数据,它可以由客户端读取或设置,
备打印的报表样式,将所有数据传递到这个子VI方法就是一些函数,它们能够被客户端调用。
中,然后对VI属性进行设置,使得在程序需要
打印报表时,就可以通过调用这个子VI来打开
前面板,显示报表内容并打印出来,这种报表样
式简单、古板、笨拙,同时对于已经建立好的报
表,不能随机访问和修改,实用性差。
2.5 用DDE生成报表
DDE(Dynamic Data Exchange),即动态数据
交换,是Windows的主要特征之一,它是应用程
序之间进行数据交换的一种协议,它允许应用程
序利用Windows消息来执行数据交互和远程命
令,虽然该方法功能强大,但是存在着程序流程
不够直观,调试相对困难的缺点,而且还要求程
序员要对VBA语法有相当的了解。
2.6 用ActiveX自动化生成报表
利用ActiveX自动化可以访问某个Windows
应用程序中的对象所集成的属性和方法,或者在
其他的Windows应用程序中对它们进行调用。
ActiveX服务器端应用程序是一个服务器提供
者,客户端应用程序可以访问服务器的对象,从
而获取和设置这些对象的属性,并且调用它们的
方法。这里可以把Word当成一个ActiveX自动
化服务器,把LabVIEW当成客户端,去控制Word
的属性和方法,从而生成完美的报表。
面向对象编程中对象拥有的属性和方法一致,即
4 基于ActiveX的Word报表生成
利用ActiveX自动化可以生成Word报表或者
Excel报表,一些项目和论文中都提到生成Excel
报表,本非正弦测试系统生成一个包括复杂不规
则表格、波形图像、未知量测量数据的完美报表,
因此采用Word报表生成技术。
4.1 LabVIEW中使用ActiveX自动化调用Word
的方法
Word中编程部分常用对象层次结构如图1
所示,Application代表Word应用程序,
Application 对象包括可返回最高一级对象的属
性和方法。Document对象代表一篇文档;
Selection代表Application对Document的操作,
Move Down/Up、Move Left/Right表示光标在已
有表格中上下左右位置移动;InlineShapes表示插
入图片、控件、容器等;Tables集合包含了指定
内容、范围或文档中的所有表格,Table对象代表
一个表格;Add表示绘制指定行列的表格;Cell
表示指定表格目标位置;Range对象代表文档中
的一个范围并对Word进行编辑操作,主要是使
用Range对象识别文档的指定部分,然后通过
Range对象的属性和方法进行操作。
Application
Document(s)
SelectionInlineShapesAdd
Move Down/Up
Move Left/Right
Table(s)CellRange
Range
图1 Word中常用对象层次
3 ActiveX技术简介
ActiveX是微软公司推出的一种技术集的统
称,这项技术可以使代码重用,并能将多个程序
连接在一起实现复杂的计算需求。它是基于COM
组件对象模型技术。作为ActiveX核心的COM
是一个以处理所有阻碍软件组件开发为目的的标
准,它希望最终建立一个大型的组件库,使软件
工程师能像硬件工程师一样通过搭建组件的办法
开发应用程序
[6]
。
ActiveX自动化可以使一个程序通过
ActiveX控制另一个程序。类似网络,其中一个
程序作为客户端,另一个程序作为服务器端。
LabVIEW既可以作为客户端也可以作为服务器
LabVIEW中对ActiveX提供了良好的支持,
在程序框图中使用
Functions>>Connectivity>>ActiveX功能面板控
件,ActiveX调用Word的一般流程如下:1) 打
61
船电技术
|
应用研究 Vol.30 No.4 2010.4
开自动化引用:使用Automation Open创建自动
化引用句柄,在引用句柄上点击右键选择“Select
ActiveX Class”项,从其子菜单中选择“Browse”,
在“Select Object from Type Library”页中的“Type
Library”里点击下拉菜单,选择“Microsoft Word
11.0 Object Library Version 8.3”,并选中“Show
Creatable Objects Only”项,在该项之下的框中点
击“Application(ation.11)”,然后按
“OK”键。 2) 设置获得对象属性和调用方法:通
过使用属性和方法访问Word对象,完成编辑操
作。3) 关闭自动化引用:结束对Word的访问,
关闭Word服务器。如图2为新建Word应用程序,
建立一个新文档。
图2 新建空白word
4.2 生成Word报表
用ActiveX控件生成Word报表有两种方式,
一种是打开空白Word,在上面输出信息和表格,
但要做成复杂的格式化报告相当费时;另外一种
是调用已制定好的Word报表模板,向特定的位
置输入信息。本系统的报表涉及面比较多,有固
定的信息要求,也有未知量的测试数据,所以采
用两种方法结合,在报表的开始部分将固定的信
息和结构设计成模板,这部分有不规则的表格,
紧接着插入几张波形截图,最后根据测试数据量
需要自动绘画规则的表格并输入数据。
4.2.1向模板报表输入信息
用ActiveX控件技术向模板中输入信息是相
对简单的,只需要调用Selection的GoToNext方
法,将其what设置成wdGoToPage,wdGoToTable,
wdGoToLine等动作,就可以将光标移动到特定
位置,然后输入信息。也可以根据需要设置字体
大小、颜色、下划线、数据标记等Word中常用
的工具标记。在这里给出在表格里输入信息的方
法,用GoToNext方法使光标进入表格,然后用
Move Down/Up、Move Left/Right使光标在表格
中上下左右移动,然后调用TypeText输入信息,
将数据转换成字符串输入。对于不规则的表格要
用大量的Move方法,对于有规律可行的表格,
可以使用for循环等编程技巧优化代码。如图3
所示是简单的向模板中输入信息代码,其对应的
结果见表1。
表1 模板输入信息的结果
电压有效值(V)
电流有效值(A)
有功功率(kW)
无功功率(kVar)
视在功率(kVA)
功率因素
A相绕组 B相绕组 C相绕组
1.10 1.20 1.30
2.10 2.20 2.30
3.10 3.20 3.30
4.10 4.20 4.30
5.10 5.20 5.30
6.10 6.20 6.30
图3 向模板输入信息
62
Vol.30 No.4 2010.4 应用研究
船电技术
|
4.2.2 向Word中插入图片
一个比较好的报表需要各种图表,如柱形图、
饼图、曲面图,实时图像。本系统中采用将图表方法向光标位置插入图片。如图4 给出LabVIEW
和图形控件输出图像及将VI前面板输出图像,中控件输出图像和向Word中插入图片代码示例。
然后插入Word中。向Word中插入图片需要调用
Word相关的类中的InlineShapes类,AddPicture
图4 向Word中插入图片
4.2.3 向Word中插入表格输入信息
在测试项目中,有时根据客户要求提供测试
数据,这些数据量的多少是不确定的,所以不能
用模板方式提供,只能用生成表格方式。在测试
时实时在表格控件中增加显示测试数据,打印报
表时可以将表格控件数据追加在模板报表中。
Tables中的Add生方法生成表格,其中行、列数
由NumRows和NumColumns决定,Table是指生
成的特定表格,用Cell的Row和Column定位到
具体的单元格,Range中的Text输入单元格内容,
还可用Rang中的Font、Bold、Italic等设置字体。
如图5所示根据表格控件内的数据量绘制表格。
图5 绘制表格输入信息
5 结束语
综合全文所述,采用ActiveX方式生成的报
表具有较好的效果和质量,具有较低的软件开发
成本,是一种既实用又经济的方法。本文给出在
LabVIEW中用ActiveX生成Word报表的简单实
用方法。ActiveX的功能强大,它不仅能很好地
实现LabVIEW与Word交互编程,还能实现与
Excel、MATLAB、PowerPiont、 Access等应用
程序交互,伴随着ActiveX技术发展,越来越多
的软件也开始支持ActiveX技术,这为LabVIEW
的功能扩展开辟了广阔的应用空间。
[1] 陈锡辉, 张银鸿. LabVIEW 8.20程序设计从入门到
精通[M]. 北京: 清华大学出版社, 2007.
[2] 赵建, 谢力元, 陈强. 基于LabVIEW的虚拟仪器报
表生成技术的研究[J]. 仪器仪表标准化与计量.
2004, 6(25).
[3] 郑默思, 周晓军. 基于ActiveX的虚拟仪器报表打
印方法[J]. 机电工程, 2006.12.
[4] 张磊, 王斌. LabVIEW报表生成技术在计量系统中
的应用[J]. 计测技术, 2005.3
[5] 张仁辉. 基于ActiveX技术的LabVIEW与Word通
信实现[J]. 仪器仪表用户, 2007.5
[6] 雷振山, 魏丽等. LabVIEW高级编程与虚拟仪器工
程应用[M]. 北京: 中国铁道出版社, 2009.5.
参考文献:
63


发布评论