基于ActiveX控件的LabVIEW动态控制Excel多工作表数据显示
陈金兰;张家精;陈松
【摘 要】针对Excel无法在一个图表中同时显示多个工作表的数据,且不能动态控制数据显示问题,介绍LabVIEW利用ActiveX控件在同一个图表中同时动态控制显示Excel多个工作表数据的方法,并给出详细过程和结果.便于对不同工作表数据的对比和分析,并增加数据显示的灵活性和方便性.
【期刊名称】《淮北师范大学学报(自然科学版)》
【年(卷),期】2013(034)004
【总页数】5页(P72-76)
【关键词】ActiveX;LabVIEW;Excel;动态控制显示
activex 控件【作 者】陈金兰;张家精;陈松
【作者单位】安徽建筑大学机械与电气工程学院,安徽合肥230601;安徽建筑大学数理系,安徽合肥230601;安徽建筑大学机械与电气工程学院,安徽合肥230601
【正文语种】中 文
【中图分类】TP319
在许多测控项目和科学研究中,经常用传感器收集数据,存储在Excel文件中,并利用这些数据进行对比、分析、控制和科学研究,特别是用图表直观地显示、对比数据.虽然Excel中的图表可以同时显示所嵌入的单个工作表中的多列或多行数据,以进行直观显示、对比和分析研究.往往许多类似的,且需要对比显示的数据是存放在不同的工作表中,Excel却无法在同一个图表中动态控制显示这些数据,并且不能灵活控制显示或不显示某一个工作表中的数据.
LabVIEW是一种方便灵活的虚拟仪器开发平台,它采用基于流程图的图形化编程方式,可高效地进行数据管理、科学计算等方面应用程序的开发[1].LabVIEW提供了强大的外部程序接口,包括DLL、ADO、ActiveX和LabSQL等[2],其中通过ActiveX,可方便地实
现对数据的访问等.本文针对Excel在一个图表中不能同时灵活控制显示多个工作表的数据问题,介绍LabVIEW采用ActiveX控件技术实现对Excel的数据访问,用LabVIEW的一个图表显示Excel多个工作表的数据,并根据需要灵活控制显示或不显示某个工作表中的数据,以便对比、分析和研究各工作表之间的数据关系.
1.1 LabVIEW和Excel通信方法
虚拟仪器测试系统中,重要的是对实时数据进行显示、查询、统计、生成报表分析等.利用LabVIEW和Excel通信最主要的有以下4种方法:
方法1:利用LabVIEW的DDE功能可以很好地实现LabVIEW与Excel的数据通信.DDE(dynamic data exchange)即动态数据交换,是为在同一台计算机或不同计算机上运行的程序提供动态数据交换[1].它基于Windows消息机制,各应用程序间通过传递消息进行对话交换信息.但是DDE消息传递采用client/ server模式,要求编程者对client/server比较了解,配置复杂,且在Excel的格式上要求比较严格,对现有Excel表格访问时经常无法读取.
方法2:利用NI公司的附加工具包LabVIEW SQL-Tool kit进行数据库访问,但这个工具包较昂贵,对于很多LabVIEW用户来讲,这个价格是不可能承受的[3].
方法3:利用Lab SQL工具包实现LabVIEW访问Excel数据.Lab SQL是一个免费的、多数据库的、跨平台的LabVIEW数据库访问工具包,支持Windows操作系统中的任何基于ODBC的数据库,通过ADO(Microsoft Active Data Object)控件和Lab SQL语言实现数据库的访问,将复杂的底层ADO以及Lab SQL语言操作封装成一系列的LabSQL VIs模块,便于软件模块化的设计[3].该方法虽然封装了数据对象ADO,对于访问SQL Server、Oracle、Access等数据库应用程序易于理解,操作简单,但是对于访问Excel数据显得累赘,还要下载工具包,安装到相应目录,且还要配置ODBC数据源等复杂的配置程序.
方法4:在LabVIEW中利用ActiveX控件读写Excel数据.ActiveX是Microsoft提出的一组使用COM(Component Object Model,部件对象模型)使得软件部件在网络环境中进行交互的技术集.它与具体的编程语言无关[4].LabVIEW自带处理Excel等应用程序的ActiveX控件,包括:Open Application(打开应用)、Open Workbooks(打开工作薄)和Open Worksheets(打开工作表)等控件,并使用属性节点和调用节点实现数据的读取和转换,就像直接操作Excel表格一样灵活方便,本文后续内容介绍该方法实现和Ex⁃cel通信的详细步骤.
1.2 利用ActiveX访问Excel数据
以上分析得出,LabVIEW和Excel通信采用ActiveX控件比较方便易行,下面详细阐述用ActiveX控件实现LabVIEW与Excel多个工作表的通信步骤.
LabVIEW中利用ActiveX打开Excel,分为打开应用程序(Open Application)、打开工作薄(Open Work⁃books)、打开工作表(Open Worksheets)和读取数据4个主要步骤,以下详细描述实现方法.
(1)打开应用程序.如图1所示,在前面板中创建一个“自动化引用句柄”控件,右击该控件,单击“选择ActiveX类”项选择“Excel._Application”,此时“自动化引用句柄”的标签自动更新为“Excel._Applica⁃tion”.
(2)创建“打开自动化”控件.打开程序框图,如图2所示,右击“Excel._Application”控件,选择“Ac⁃tiveX选板”项,打开级联菜单,再拖放“打开自动化”控件,将“Excel._Application”连线至“打开自动化”的左侧自动化引用句柄端.该步骤相当于在电脑中打开Excel应用程序.
(3)创建“属性节点”.右击“打开自动化”控件,在“ActiveX选板”中拖放“属性节点”,将“打开
自动化”右侧自动化引用句柄端连线至“属性节点”的引用端;再右击“属性节点”的属性,在下拉列表中选择“Workbooks”,即创建了“Workbooks”,如图3所示.
(4)创建“调用节点”.右击“Workbooks”控件,在“ActiveX选板”中拖放“调用节点”,将“Workbooks”连线至“调用节点”的引用端,此时“调用节点”自动更新为“Workbooks”,再右击“Workbooks”调用节点的“方法”,在下拉列表中选择“Open”.此时在“Open”的“Filename”输入端连接所需打开Excel文件的路径,这里的文件路径控件需要在前面板中创建一个“文件路径输入控件”.该步骤相当于在已打开的Excel应用程序中打开一个Excel文件,即工作簿.
(5)创建“Workbook”属性节点存放打开的workbook.放下“属性节点”,其引用端连接至workbook调用节点的“Open”,属性节点显示为“workbook”,然后单击“属性节点”的属性,在下拉列表中选择“Work⁃sheets”.
(6)同步骤4,放下“调用节点”,其引用端连接“Worksheets”,此时“调用节点”显示为“sheets”,再单击“调用节点”的方法,在下拉列表中选择“Item”,在“Item”的“Index”输入端数值以选择读取工作薄中的第几个sheet,如图4所示.该步骤相当于在打开的工作簿中选择一个工作表.
(7)Excel中存储的数据可能有多种,如数值型、字符型、货币型等,故Labview读取数据时需要将未知的数据转换成其可识别的数据类型,“变体至数据转换”控件实现该转换.在“ActiveX选板”中选择“变体至数据转换”控件,将其变体端连接至“Item”;再在前面板中放下“自动化引用句柄”,在“选择ActiveX类”下选择“Excel._Worksheet”,将其连线至“变体至数据转换”的类型端.
(8)放下“属性节点”,其引用端连接“变体至数据转换”的数据端,然后单击“属性节点”的属性,在下拉列表中选择“UsedRange”.再放下“调用节点”,其引用端连接“UsedRange”,用单击“调用节点”的方法,在下拉列表中选择“Value(获取)”,如图5所示.该步骤相当于在选中的工作表中选择一个区域范围的数据,并将其读出.
(9)放下“变体至数据转换”,其变体端连接至“Value”,只要在“变体至数据转换”的类型端连接一个二维的字符型数组常量,就可以在数据端获取表格中的数据.以上步骤的程序,如图6所示.
程序的最后需要用Close Application、Close Workbooks和 Close Worksheets来关闭调用.在此不再详细赘述.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论