您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > LabVIEW中基于ActiveX的报表生成技术研究
船电技术|应用研究Vol.30No.42010.460LabVIEW中基于ActiveX的报表生成技术研究付志超陈馨张聪姜波(中国船舶重工集团公司第712研究所,武汉430064)摘要:报表生成功能是一个完备的虚拟仪器测试系统的重要组成部分。本文介绍了几种LabVIEW中报表生成的方法及其特点,重点阐述ActiveX报表生成技术。结合实例详细介绍利用ActiveX生成一份完美的Word报表。关键词:LabVIEWActiveX报表生成中图分类号:TP391文献标识码:A文章编号:1003-4862(2010)04-0060-04ReportGenerationTechnologyBasedonActiveXinLabVIEWFuZhichao,ChenXin,ZhangCong,JiangBo(WuhanInstituteofMarineElectricPropulsion,CSIC,Wuhan430064,China)Abstract:ThefunctionofreportgenerationisanimportantpartofacompleteVirtualInstrumentsystem.Inthispaper,severalmethodsofreportgenerationbasedonLabVIEWandtheircharacteristicsareintroduced,withtheemphasisonthetechnologythatreportgenerationwithActiveX.CombinedwithdetailedexamplesoftheuseofActiveX,howtogenerateaperfectMicrosoftWordreportisintroduce.Keywords:LabVIEW;activeX;reportgeneration1引言LabVIEW是一种业界领先的工业标准图形化编程工具,主要应用于开发测试、测量与控制系统。它将软件和各种不同的测量仪器硬件及计算机集成在一起,建立虚拟仪器系统,以形成用户自定义的解决方案[1]。测试项目完成后,需要将测量的结果以数据报表、结果通知书报告给客户,一份完美的报表能体现出测试项目的能力和测试系统本身的质量,所以报表生成技术在自动测试项目中比较重要。本文主要讨论LabVIEW中报表生成技术,特别是ActiveX生成灵活的Word报表。2几种报表生成方法及特点下面介绍LabVIEW中几种报表生成的方法,并比较他们的优缺点和适用场合[2,3]。2.1用FileI/O类函数生成报表利用LabVIEW中FileI/O类函数,如WriteCharacterstoFile,WritetoSpreadsheetFile等函数来生成报表,生成的报表是ASCII格式的文本文件。其优点是程序简洁,速度快,但缺点也很明显,无法分段文字、绘制表格、插入图表,报表样式极为简单。所以,这种方法只能用在对报表格式要求不高的场合[4,5]。2.2用ReportGeneration类生成报表利用LabVIEW中的ReportGeneration类函数,可以生成LabVIEW的标准报表或HTML网页格式报表,这种类型的报表样式比较美观,而且可以绘制简单规则的表格,可以插入图形,已经可以满足一般用户的要求。但缺点是不适合制作样式较为复杂、结构不规则的表格,而且最大的缺点是报表一旦生成以后,用户很难对数据进行二次手动修正,在实际工作中,特别是对于计量测试部门,这样的报表不适用。2.3用ReportGenerationToolkit生成报表ReportGenerationToolkit是一个LabVIEW的功能模块,它可以较好地生成MicorsoftOffice收稿日期:2009-08-04作者简介:付志超(1981-),男,工学硕士,工程师,研究方向:计算机控制及自动测试技术。Vol.30No.42010.4船电技术|应用研究61支持的报表,是最好的报表生成方案。但是这个模块并未集成在LabVIEW中,必须另外单独购买,这无形中增加了软件开发成本,并不是一个性价比很高的解决方案。2.4将前面板设计成报表该方法是做一个子VI,将其前面板设计成准备打印的报表样式,将所有数据传递到这个子VI中,然后对VI属性进行设置,使得在程序需要打印报表时,就可以通过调用这个子VI来打开前面板,显示报表内容并打印出来,这种报表样式简单、古板、笨拙,同时对于已经建立好的报表,不能随机访问和修改,实用性差。2.5用DDE生成报表DDE(DynamicDataExchange),即动态数据交换,是Windows的主要特征之一,它是应用程序之间进行数据交换的一种协议,它允许应用程序利用Windows消息来执行数据交互和远程命令,虽然该方法功能强大,但是存在着程序流程不够直观,调试相对困难的缺点,而且还要求程序员要对VBA语法有相当的了解。2.6用ActiveX自动化生成报表利用ActiveX自动化可以访问某个Windows应用程序中的对象所集成的属性和方法,或者在其他的Windows应用程序中对它们进行调用。ActiveX服务器端应用程序是一个服务器提供者,客户端应用程序可以访问服务器的对象,从而获取和设置这些对象的属性,并且调用它们的方法。这里可以把Word当成一个ActiveX自动化服务器,把LabVIEW当成客户端,去控制Word的属性和方法,从而生成完美的报表。3ActiveX技术简介ActiveX是微软公司推出的一种技术集的统称,这项技术可以使代码重用,并能将多个程序连接在一起实现复杂的计算需求。它是基于COM组件对象模型技术。作为ActiveX核心的COM是一个以处理所有阻碍软件组件开发为目的的标准,它希望最终建立一个大型的组件库,使软件工程师能像硬件工程师一样通过搭建组件的办法开发应用程序[6]。ActiveX自动化可以使一个程序通过ActiveX控制另一个程序。类似网络,其中一个程序作为客户端,另一个程序作为服务器端。LabVIEW既可以作为客户端也可以作为服务器端。客户端和服务器端互相独立存在,但是通过客户端调用服务器端提供的ActiveX对象,它们之间能够实现信息共享。ActiveX对象包含客户端能够访问的属性和方法。这里的方法和属性与面向对象编程中对象拥有的属性和方法一致,即属性就是一些数据,它可以由客户端读取或设置,方法就是一些函数,它们能够被客户端调用。4基于ActiveX的Word报表生成利用ActiveX自动化可以生成Word报表或者Excel报表,一些项目和论文中都提到生成Excel报表,本非正弦测试系统生成一个包括复杂不规则表格、波形图像、未知量测量数据的完美报表,因此采用Word报表生成技术。4.1LabVIEW中使用ActiveX自动化调用Word的方法Word中编程部分常用对象层次结构如图1所示,Application代表Word应用程序,Application对象包括可返回最高一级对象的属性和方法。Document对象代表一篇文档;Selection代表Application对Document的操作,MoveDown/Up、MoveLeft/Right表示光标在已有表格中上下左右位置移动;InlineShapes表示插入图片、控件、容器等;Tables集合包含了指定内容、范围或文档中的所有表格,Table对象代表一个表格;Add表示绘制指定行列的表格;Cell表示指定表格目标位置;Range对象代表文档中的一个范围并对Word进行编辑操作,主要是使用Range对象识别文档的指定部分,然后通过Range对象的属性和方法进行操作。ApplicationSelectionDocument(s)Table(s)RangeRangeMoveDown/UpMoveLeft/RightInlineShapesCellAdd图1Word中常用对象层次LabVIEW中对ActiveX提供了良好的支持,在程序框图中使用FunctionsConnectivityActiveX功能面板控件,ActiveX调用Word的一般流程如下:1)打船电技术|应用研究Vol.30No.42010.462开自动化引用:使用AutomationOpen创建自动化引用句柄,在引用句柄上点击右键选择“SelectActiveXClass”项,从其子菜单中选择“Browse”,在“SelectObjectfromTypeLibrary”页中的“TypeLibrary”里点击下拉菜单,选择“MicrosoftWord11.0ObjectLibraryVersion8.3”,并选中“ShowCreatableObjectsOnly”项,在该项之下的框中点击“Application(word.Application.11)”,然后按“OK”键。2)设置获得对象属性和调用方法:通过使用属性和方法访问Word对象,完成编辑操作。3)关闭自动化引用:结束对Word的访问,关闭Word服务器。如图2为新建Word应用程序,建立一个新文档。图2新建空白word4.2生成Word报表用ActiveX控件生成Word报表有两种方式,一种是打开空白Word,在上面输出信息和表格,但要做成复杂的格式化报告相当费时;另外一种是调用已制定好的Word报表模板,向特定的位置输入信息。本系统的报表涉及面比较多,有固定的信息要求,也有未知量的测试数据,所以采用两种方法结合,在报表的开始部分将固定的信息和结构设计成模板,这部分有不规则的表格,紧接着插入几张波形截图,最后根据测试数据量需要自动绘画规则的表格并输入数据。4.2.1向模板报表输入信息用ActiveX控件技术向模板中输入信息是相对简单的,只需要调用Selection的GoToNext方法,将其what设置成wdGoToPage,wdGoToTable,wdGoToLine等动作,就可以将光标移动到特定位置,然后输入信息。也可以根据需要设置字体大小、颜色、下划线、数据标记等Word中常用的工具标记。在这里给出在表格里输入信息的方法,用GoToNext方法使光标进入表格,然后用MoveDown/Up、MoveLeft/Right使光标在表格中上下左右移动,然后调用TypeText输入信息,将数据转换成字符串输入。对于不规则的表格要用大量的Move方法,对于有规律可行的表格,可以使用for循环等编程技巧优化代码。如图3所示是简单的向模板中输入信息代码,其对应的结果见表1。表1模板输入信息的结果A相绕组B相绕组C相绕组电压有效值(V)1.101.201.30电流有效值(A)2.102.202.30有功功率(kW)3.103.203.30无功功率(kVar)4.104.204.30视在功率(kVA)5.105.205.30功率因素6.106.206.30图3向模板输入信息Vol.30No.42010.4船电技术|应用研究634.2.2向Word中插入图片一个比较好的报表需要各种图表,如柱形图、饼图、曲面图,实时图像。本系统中采用将图表和图形控件输出图像及将VI前面板输出图像,然后插入Word中。向Word中插入图片需要调用Word相关的类中的InlineShapes类,AddPicture方法向光标位置插入图片。如图4给出LabVIEW中控件输出图像和向Word中插入图片代码示例。图4向Word中插入图片4.2.3向Word中插入表格输入信息在测试项目中,有时根据客户要求提供测试数据,这些数据量的多少是不确定的,所以不能用模板方式提供,只能用生成表格方式。在测试时实时在表格控件中增加显示测试数据,打印报表时可以将表格控件数据追加在模板报表中。Tables中的Add生方法生成表格,其中行、列数由NumRows和NumColumns决定,Table是指生成的特定表格,用Cell的Row和Column定位到具体的单元格,Range中的Text输入单元格内容,还可用Rang中的F
本文标题:LabVIEW中基于ActiveX的报表生成技术研究
链接地址:https://www.777doc.com/doc-4312223 .html