原创 LabVIEW中Excel报告生成功能开发

2008-5-25 01:08 4168 4 6 分类: 测试测量
1LabVIEW报告生成工具包简介
  LabVIEW报告生成工具包通过ActiveX技术将Microsoft Word和Excel与LabVIEW集成开发环境结合起来,用于快速生成专业的报告,从而高效地表示出各种测试数据和结果。用户可以移植、修改现有的报告模板,并使用标准的LabVIEW功能,扩展该工具包的报告生成功能;通过运行由VBA编写的宏代码还可以进一步自定义修改报告生成过程并自动生成报告。
  LabVIEW报告生成工具包包含了3类VIs(类似传统语言的函数或过程):①高级报告生成VIs,用于新建报告和进行常规操作。②专门用于生成Word格式的报告VIs,其中包括了文档管理、查找、替换、编辑和格式化Word中的图表、图片,通过编写VBA代码自定义各种复杂的操作。③专门用于生成Excel格式的报告VIs,其除了能进行常规的Excel操作外,还可以操作Excel中的宏。

2Excel格式报告功能开发
  Excel格式的报告功能开发主要使用了FunctionsReport GenerationExcel Specific VIs函数模板中的Excel Easy Title.vi、Excel Easy Text.vi、Excel Easy Table.vi、ExcelEasy Graph.vi 4个简易VIs和General、Format、Graphs and Pictures、Advanced 4个函数子模板。



2.1直接输出Excel格式报告
  下面的例子描述了使用简易VIs输出Excel文档报告的过程,框图程序见图1,运行结果是生成包含文本、表格、图表的报告。
  首先新建一个Excel文档,为此在LabVIEW的FunctionsReport Generation模板中选择New Report.vi,将其放置在框图程序中,设置report type属性为Excel,当程序运行时LabVlEW利用ActiveX技术调用Microsoft Excel自动化服务器,从而达到控制Excel工作薄与工作表生成过程的目的。为了加速报告的生成,Excel的初始窗口模式设置为minimized。Excel Easy Title.vi函数用于为Excel文档指定标题,通过给字符串变量Title赋值,可以自定义报告的标题内容。此外,还可以设置标题的字体、字号、下划线、颜色等参数。Excel Easy Text.vi用于向工作表中添加文本和设置文本属性。参数start为文本区域左上脚的单元格,end为右下脚单元格,border值为Ture,即显示文本框。Excel Easy Table.vi可以向报告中插入表格,程序中将二维字符数组Test Table赋值给Excel Easy Table.vi,并显示表头。



  对于专业的自动化测试系统报告常常需要将大量的测量数据转化为意义明确的显示曲线或三维图形,在LabVIEW中可以轻松地实现。使用Excel Easy Graph.vi可以在Excel中插入几十种类型的图表,如柱形图、饼图、曲面图。示例程序中,设置图标类型属性chart type为xlLine,即绘制折线图。为了控制图表的显示,报告生成工具包提供了ExcelSetGraphColors.vi用于外观的定制,如选择线宽、背景色、前景色等。在插入、更新或改变图表显示方式后,需要调用Excel Quit Graph.vi关闭数据表,以防止用户的误操作导致数据丢失。最后当完成了报告生成工作,调用Excel Bring to Front.vi来最大化Excel的显示窗口,方便用户浏览。
2.2利用Excel模板输出报告
  在Microsoft Excel中,可基于模板来新建工作簿。模板中可包含格式样式、标准的文本、公式、Visual Basic for Applications宏和自定义工具栏等。使用模板可以减少输入的工作量、为复杂的报告制定标准格式、避免反复输入相同的信息或进行相同的格式修改,从而大大加快报告的生成速度。
  用户可以事先定制模板以确定报告格式,然后运行LabVIEW应用程序将测量结果插入到模板中的占位符处,此外还可以进行简单的编程快速实现报告的显示、打印、保存等功能。下面的例子描述了利用Excel模板输出报告的过程,框图程序见图2。



  首先定制模板Excel Template.xls,定义工作薄中的4个名称,分别为date、time、temperature、data。Current VI’s Path、Strip Path、Build Path用于获得模板文件的路径。Append Report Text.vi向模板中添加文本,名称由参数MS Office parameters指定,Get Date/Time String和字符串变量Temperature分别插入测量时间和测量温度。Append Table to Report.vi向名称data中插入数据。Excel模板中可以包含空的图表,使用Excel Update Graph.vi、Excel Quit Graph完成数据填充、更新工作。Save Report to File用于进行报告的保存。框图程序最后使用Dispose Report.vi释放内存资源。

2.3LabVIEW中执行VBA代码
  Visual Basic for Applications(简称VBA)是新一代标准宏语言,它为Office提供了多种功能,例如无模式用户窗体及对附加ActiveX控件的支持。VBA的项目(Project)可以由使用VBA的Excel、Word、PowerPoint等称为宿主的Office应用程序来调用。LabVlEW中用于执行VBA代码主要有两种方法:一种是在模板文件(.dot)中创建宏,一种是调用VBA模块文件(.bas)。
  有时候用户需要在Excel中做大量重复性的工作,这时候使用宏可能是最好的方法。宏实质是VBA编写的程序,用以自动完成所需任务。对于Excel97及以上版本,LabVIEW可以通过Excel Run Macro.vi来执行宏,并能向宏传递参数或取得宏的返回值。当在宏中调用另—个应用程序的对象时,通过Excel Add Reference to VBproj.vi可以获得该对象的引用,从而能够使用对象的属性和方法。
  有时为了便于程序维护,用户可以单独编写VBA,并将其保存在模块文件(.bas)中,需要时通过指定宏名进行调用,如图3。框图程序中,Append Numeric Table to Report.vi向报告中插入二维表格数据,然后使用Excel Import Module.vi导入外部VBA模块文件“C:\Test Mocro.bas”,Excel Run Macro.vi运行模块中定义的宏Process Data,Excel Remove Module.vi从Excel工作薄中移出模块,Print Report.vi打印Excel报告。



3LabVIEW报告生成工具包的二次开发
  下面举例说明二次开发的基本过程,框图程序见图4。



  在LabVlEW中使用引用(Refnum)来作为某个对象的唯一标识符,对象可以是文件、设备、网络连接等。由于引用是指向某一对象的临时指针,因此它仅在对象被打开时有效,一旦对象 被关闭,LabVIEW就会自动断开连接。为了获得对Excel更多的控制,可以在框图程序中使用 LabVlEW提供的相关子VI创建和获取自动化对象,然后在代码中调用对象拥有的方法和属性 ,当不再需要对象时,可以随时释放。
  在LabVIEW的ControlsActiveXAutomation Refnum模板中选择自动化引用控制量,将其 放置在前面板上,从对象列表中选择Microsofi Excel 11.0 Object Library 1.5(例子中使用的是Excel 2000),这样Excel的引用就添加到应用程序中,其对应的图标为 Excel.Application。为了简化访问自动化服务器的过程,LabVIEW在其FunctionCommunic ationActiveX模板中 提供了一组与ActiveX操作相关的子VI,其中Automation Open.vi打开引用,启动Excel自动 化服务器,并将引用传递给其他节点,如属性节点(Property Node) 、调用方法节点(Invoke Node)。程序中LabVIEW设置Excel窗口属性Window State为xlMinim ized,即将窗口最小化,接着调用ExecuteExcel4Macro方法,执行宏代码,再调用Quit方法 ,退出Excel应用程序,Automation Close.vi随即断开引用。运行程序,可以看到Excel启 动后,Windows任务栏上出现最小化后的Excel图标,执行预先定义的宏后自动退出Excel, 从而有效地避免了报告生成过程中用户的误操作。这里仅介绍了ActiveX函数模板的基本使 用,以及调用Excel过程的总体框架,用户可以根据实际需要进行扩充从而构建出自己的函 数库。
http://bbs.eccn.com/ecbbs/dispbbs.asp?boardID=70&ID=22159&page=7

文章评论2条评论)

登录后参与讨论

jizzll_617398179 2008-12-27 23:40

什么?

用户208520 2008-12-24 18:36

要注册的?

jizzll_617398179 2008-8-10 00:07

我用的8.2 可以借助EXCEL实现动态实时显示

用户1569246 2008-8-8 17:28

请问FunctionsReport GenerationExcel Specific VIs模板是自己编的子VI还是在LABVIEW哪个更高级的版本中才有。 现在要做一个可以按一定格式动态显示测试数据的模块,请问如何可以实现,可以借助EXCEL实现动态实时显示吗
相关推荐阅读
jizzll_617398179 2010-02-08 10:53
正确理解A/D转换器的输入
http://www.freescale.com.cn/tech_ariticles/2005/1102_1.asp 许多嵌入式应用都会用到A/D转换器。然而,如果错误连接了A/D转换器输入端的电路,...
jizzll_617398179 2010-01-12 13:37
好久没来,都长草了
好久没来,都长草了,呵呵。整天忙得很,不过估计再过两个月会轻松点~\(≧▽≦)/~啦啦啦...
jizzll_617398179 2009-03-16 21:57
很奇怪,我收到站内信,但是却找不到发信人呢
发信人是个[],点击就跳到我自己的主页了。只好在这里给那位朋友留言了。 我不知道你说的哪篇文章,还有我也不知道你的EDN的ID。你可以在博客上面留言的。...
jizzll_617398179 2009-03-14 13:08
如何在EXCEL中使用16进制数
最近需要计算串口发送的数据,太多而且比较麻烦。知道EXECL功能强大,所以网上找了找,刚好,不错,很方便。网上找到的http://hi.bccn.net/space-99452-do-blog-id-...
jizzll_617398179 2009-03-05 14:37
〖常识〗不同晶振的最大波特率及其误差
最近犯了个错误,呵呵,晶振和波特率的问题,特查了记在这里,O(∩_∩)O~〖常识〗不同晶振的最大波特率及其误差http://www.aoxue.org/bbs/read.php?tid=65585不同...
jizzll_617398179 2009-02-11 14:30
大端模式和小端模式
转载http://www.cnblogs.com/TsuiLei/archive/2008/10/29/1322504.html大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则...
我要评论
2
4
关闭 站长推荐上一条 /2 下一条