组态王报表保存成excel
使用VBA在Excel中实现组态软件历史数据的导入 支持delphi语法

《工业控制计算机》2009年22卷第9期工控组态软件有着较强的检测与控制功能,但在历史数据处理方面,只是提供了一些比较简单的查询、显示、打印函数供编程使用,如果要对历史数据进行复杂的处理就显得力不从心。
如果能将组态软件的历史数据导入Excel,利用Excel在数据处理方面的优势就可以拟补组态软件的不足。
本文讨论如何将组态王采集到的数据导入Excel的电子表格以实现复杂的报表功能。
1Kingview6.0的历史数据记录功能数据记录功能对于任何一个工业系统来说都是至关重要的,随着工业自动化程度的普及和提高,工业现场对重要数据的存储和访问的要求也越来越高。
组态王支持历史数据的记录功能,它有三种记录方式:数据变化记录、定时记录、备份记录。
被记录的数据可以存储在指定的路径下。
组态王的历史记录文件包括三种:觹.tmp、觹.std、觹.ev。
组态王的历史数据首先被保存到.tmp临时文件中,每小时生成一个。
每天的某整点时刻,运行系统读出当天的临时文件进行压缩,生成一个后缀名为.std的历史库记录文件,而每一年的记录生成一个后缀名为.ev的文件,专供历史趋势曲线调用。
历史记录文件最长可保存8000天。
当到达规定时间时,系统自动删除最早的历史记录文件。
2VBA简介使用VBA可以在Excel中导入组态王的历史数据。
VBA是Visual Basic for Application的简称,是Office办公软件的内置编程语言,是程序开发语言Visual Basic的子集,它采用事件驱动机制。
利用VBA可以在Excel中自定义工具栏、菜单、界面,并能通过脚本语言对数据进行复杂分析和操作。
Kingview6.0提供了VBA接口,应用此接口,用户可以在Excel 中编制VBA程序来访问组态王的历史数据库,生成报表。
Kingview6.0提供的VBA接口文件为“AccessHist.dll”,该文件位于Kingview6.0安装目录下。
组态王中的数据报表制作与保存

组态王中的数据报表制作与保存组态王中的数据报表制作与保存摘要:本文主要介绍如果使用组态王来构建数据报表,并以EXCEL的格式在指定的文件路径保存。
关键字:组态王历史库数据报表制作保存一、引言数据报表是反应生产过程中的数据、状态等,并对数据进行记录的一种重要形式。
它既能反映系统实时的生产情况,也能对长期的生产过程进行统计、分析,使管理人员能够实时掌握和分析生产情况。
组态王提供内嵌式报表系统,工程人员可以任意设置报表格式,对报表进行组态。
组态王为工程人员提供了丰富的报表函数,实现各种运算、数据转换、统计分析、报表打印等。
既可以制作实时报表,也可以制作历史报表。
组态王还支持运行状态下单元格的输入操作,在运行状态下通过鼠标拖动改变行高、列宽。
另外,工程人员还可以制作各种报表模板,实现多次使用,以免重复工作。
二、数据报表的制作数据报表分为实时数据报表和历史数据报表2类。
报表的构建方法如下: 在画面内,使用工具箱中的报表窗口按钮创建一个报表窗口,如图1所示。
图1 创建后的报表窗口用鼠标双击报表窗口的灰色部分,弹出“报表设计”对话框,该对话框主要设置报表的名称、报表表格的行列数目以及选择套用表格的样式。
1、制作实时数据报表实时数据报表是实时显示相关变量的数据值,在报表窗口的单元格中直接引用变量来实现。
在报表的单元格中直接输入“=变量名”,既可在运行时在该单元格中显示该变量的数值,当变量的数据发生变化时,单元格中显示的数值也会被实时刷新。
2、制作历史数据报表历史数据报表是从组态王的历史库中查询相关变量的历史数据,并在历史数据报表内显示,因此对历史数据报表要查询的数据必须设置历史记录属性。
在组态王中,离散型、整型和实型变量支持历史记录,字符串型变量不支持历史记录。
组态王的历史记录形式可以分为数据变化记录、定时记录(最小单位为1分钟)和备份记录。
记录形式的定义通过变量属性对话框中提供的选项完成。
如图2所示。
图 2 记录属性设置在查询时,希望弹出一个对话框,可以在对话框上随机选择不同的变量和时间段来查询数据,可使用函数ReportSetHistData2(StartRow,StartCol)。
组态王历史数据导出EXCEL表格的方法

组态王历史数据导出到EXCEL表格1、新建画面,在画面里添加“报表窗口”.如图所示:2、添加按钮,命名“查询”,双击按钮,在“弹起时”编写命令语言ReportSetHistData2(1,1)3、添加按钮,命名“保存”,双击按钮,在“弹起时”编写命令语言ReportSaveAs("Report2","D:/12.xls");注意"Report2"与新建的报表窗口控件名一致。
"D:/12.xls"为数据导出至D盘文件名12的EXCEL文件,该文件是自动生成的,无需单独新建。
4、添加关闭画面按钮,同时在其他画面需要添加打开报表按钮(不详细介绍)。
5、画面编辑完毕,运行画面。
点击“查询”按钮,如图所示:“报表属性“可以设置报表的显示方式(不具体介绍)6、““时间属性”里设置查询的时间段和时间间隔,注意报表最多可一次查询20000条数据。
例如:时间间隔1S,最多一次可查询5.5小时时间段内的数据。
如果想查询下一时段的数据,需重新设置查询时间段,依次查询数据。
6、“变量选择”添加历史库变量,将所需要导出的变量添加到表格内,前提是这些变量在定义时,已做了变量记录。
如图所示:7、完成以上设置后,变量就会在报表内显示,点击“保存”,查询出来的数据就会保存进指定的EXCEL。
但是如果下次更改查询的时间段,保存后,该EXCEL数据表内的文件会被覆盖掉,因此每次保存完数据后需要将导出的EXCEL数据拷贝出来。
如果想避免每次导出EXCEL文件,有如下解决方法:1)在“数据词典”里,新建“内存字符串”变量,名为“存盘文件名“,变量的初始值为:D:/2)打开“报表画面”,保存按钮的命令语言改为ReportSaveAs("Report2",\\本站点\存盘文件名);3)添加文本变量“存盘文件名”,字符串输入输出分别连接新建的内存字符串变量,如图所示:4)运行后,如图所示:可以通过更改文本变量D:/11.XLS,将每次查询完保存的数据表名称更改,每次保存的数据就会形成一个EXCEL表格。
工业通用组态软件组态王6.51常见技术问答文档

报表与打印1.如何实现历史报表的定时打印?[可以利用命令语言实现。
例如每天早八点打印一次,利用事件命令语言,在“事件描述”中写入事件 "$小时==8"在事件“发生时”执行函数"reportprint2("reportname")"即可。
]2.如何打印信息到针式打印机,以便实现逐行打印?[用函数FileWriteStr(Filename,FileOffset,Message,LineFeed); 函数实现,filename参数为“LPT1:”]即可,只能是针式打印机才能实现逐行打印]3.组态王中的打印函数PrintWindow()如何使用纸张的横向打印功能?[PrintWindow()函数的第二、三个参数不能够为0并且将打印机的纸张设置为横向即可;如:PrintWindow( "监控中心", 60,60, 0,10, 10);]4.如何清除组态王6.0报表单元格中的内容?[1、[组态王报表没有提供清除报表内容函数,但提供了设置报表单元格内容的函数,包括设置一个或多个单元格的字符或数据,可以使用这些函数ReportSetCellString2(ReportName, StartRow, StartCol, EndRow, EndCol, "") 、ReportSetCellString(ReportName, Row, Col,"")来清除报表单元格的内容,如设为空字符。
这种方式比较灵活,对固定格式的表格特别有效,2、如果报表格式不固定,一般建议是通过REPORTLOAD("","")函数重新调入表格模板来实现数据的清空。
3、采用关闭报表所在画面然后在打开方式,]5.如何利用组态王报表来实现数据统计?[报表内部函数是指只能在报表单元格内使用的函数,有数学函数、字符串函数、统计函数等。
组态王65使用手册及帮助附录B

附录 B利用 Excel 做报表输出附录 B利用 Excel 做报表输出一、“组态王”进展历史数据记录的方式按变化灵敏度记录假设在“数据库\变量定义”中使“是否记录”有效的话,“组态王”则对此变量自动进展历史记录。
由于“组态王”是以实时数据库为核心运转的,从下位机传送上来的数据,按肯定的频率刷实时数据库,每当刷实时数据库时,“组态王”便对作历史记录的变量进展推断,以便打算是否记录。
并不是每次刷实时数据库时,“组态王”便对作历史记录的变量进展记录,假设是那样的话,假定变量更频率为0.5 秒的话,那将每隔 0.5 秒作一个历史记录,这会造成硬盘空间的巨大铺张。
“组态王”是用数据压缩的方式进展记录,在“数据词典”中规定“是否记录”有效的同时,还需定义“记录变化灵敏度”,该域缺省值为1,用户应避开将其设为 0,除非该变量的刷频率很低。
“组态王”依据“记录变化灵敏度”对变量进展推断,只有当变量的变化幅度〔相对上一次历史记录点〕大于等于“记录变化灵敏度”值时,才对此变量作一实际变化曲线201612第N 个记录点84第一记录点第五记录点次记录,以下图描述了这种记录方式,假设规定某变量的变化灵敏度为4,则记录状况如下:“记录变化灵敏度”是一个很重要的参数,此值假设规定太大,会造成记录准确性下降,此值假设太小,则会造成记录点过多,用户应依据实际状况,选择此值大小。
☞定时记录在很多状况下,“组态王”承受变化灵敏度的方式对数据作历史记录的方式并不能满足用户的需求,例如:电力调度系统中,需要对电度量作整点记录。
假设承受灵敏度方式会造成硬盘空间的铺张,“组态王”通过”定时记录”功能,来满足这方面的需求 ,整点记录最小的时间间隔为一分钟。
二、历史数据在硬盘上的存储方式全部变量的历史记录会依据时间挨次统一存到硬盘上的带有时间信息的文件中。
每天生成一个文件,扩展名为“.std”。
“组态王”可以通过定义的网络构造进展网络存储。
三、组态王供给的 VBA 接口及其函数“组态王”的历史数据查询不仅能够通过组态王本身进展本地或远程的查询,包括报表、历史趋势曲线等形式。
组态王中的数据报表制作与保存教学提纲

组态王中的数据报表制作与保存组态王中的数据报表制作与保存摘要:本文主要介绍如果使用组态王来构建数据报表,并以EXCEL的格式在指定的文件路径保存。
关键字:组态王历史库数据报表制作保存一、引言数据报表是反应生产过程中的数据、状态等,并对数据进行记录的一种重要形式。
它既能反映系统实时的生产情况,也能对长期的生产过程进行统计、分析,使管理人员能够实时掌握和分析生产情况。
组态王提供内嵌式报表系统,工程人员可以任意设置报表格式,对报表进行组态。
组态王为工程人员提供了丰富的报表函数,实现各种运算、数据转换、统计分析、报表打印等。
既可以制作实时报表,也可以制作历史报表。
组态王还支持运行状态下单元格的输入操作,在运行状态下通过鼠标拖动改变行高、列宽。
另外,工程人员还可以制作各种报表模板,实现多次使用,以免重复工作。
二、数据报表的制作数据报表分为实时数据报表和历史数据报表2类。
报表的构建方法如下:在画面内,使用工具箱中的报表窗口按钮创建一个报表窗口,如图1所示。
图1 创建后的报表窗口用鼠标双击报表窗口的灰色部分,弹出“报表设计”对话框,该对话框主要设置报表的名称、报表表格的行列数目以及选择套用表格的样式。
1、制作实时数据报表实时数据报表是实时显示相关变量的数据值,在报表窗口的单元格中直接引用变量来实现。
在报表的单元格中直接输入“=变量名”,既可在运行时在该单元格中显示该变量的数值,当变量的数据发生变化时,单元格中显示的数值也会被实时刷新。
2、制作历史数据报表历史数据报表是从组态王的历史库中查询相关变量的历史数据,并在历史数据报表内显示,因此对历史数据报表要查询的数据必须设置历史记录属性。
在组态王中,离散型、整型和实型变量支持历史记录,字符串型变量不支持历史记录。
组态王的历史记录形式可以分为数据变化记录、定时记录(最小单位为1分钟)和备份记录。
记录形式的定义通过变量属性对话框中提供的选项完成。
如图2所示。
图 2 记录属性设置在查询时,希望弹出一个对话框,可以在对话框上随机选择不同的变量和时间段来查询数据,可使用函数ReportSetHistData2(StartRow,StartCol)。
组态王教学-报表与打印
报表与打印常见问题解答北京亚控科技发展有限公司2009年8月目录1. 报表 (1)1.1 组态王软件自带的报表窗口的行列设置限制是多少? (1)1.2 组态王软件自带的报表窗口的控件名称命名有什么特殊要求吗? (1)1.3 组态王软件自带的报表窗口控件,如何设定单元格数据显示的小数位数? (1)1.4 在组态王运行系统中,如何锁定报表的行和列? (1)1.5 在组态王运行系统中能否对报表单元格中的数据进行修改? (1)1.6 在组态王运行系统中如何清除报表单元格中的数据? (2)1.7 在组态王运行系统中,如何实现将组态王报表文件保存为以日期命名的文件? (2)1.8 组态王的历史记录属性中能够设置的定时记录最短时间是1分钟,如何实现1秒钟的定时记录功能? (2)1.9 在组态王中如何删除指定目录下的单个报表文件或多个报表文件? (3)1.10 如何打开组态王报表文件(*.rtl格式的文件)?能否使用其他应用程序打开? (3)1.11 能否对组态王报表控件中的行宽和列宽进行锁定? (3)1.12 在安装组态王的计算机A中能否读取另外一台安装组态王计算机B上面的报表文件?.......................................................................... 错误!未定义书签。
1.13 在组态王中实现以时分秒为文件名且每分钟保存一报表文件功能,当保存整点的报表时,指定文件夹内的文件名比实际时间少一个小时? (3)1.14 在组态王报表控件中对合并的单元格应如何计算它的行号和列号?...................................................................................................... 错误!未定义书签。
1.15 在组态王画面上如何得到指定变量在指定时间内的最大值、最小值和平均值?...................................................................................... 错误!未定义书签。
组态王6.5常见疑难问题解答
file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh85AE.htm
2011-2-28
组态王6
页码,2/17
[数据库中保存一个月的历史数据,自动删除一个月以前的数据。命令语言放在应用程序命令语言启动时或者事件命令语言$时==1中: SQLConnect( DeviceID, "dsn=历史;uid=er;pwd=0");
file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh85AE.htm
2011-2-28
组态王6
返回页首
6.用IE客户端能够访问到组态王WEB服务器,在进度条进度程序完成后,画面呈灰色,不能正常显示?
[用户曾经安装过JAVA插件,但与组态王的JAVA插件不兼容 重新安装组态王自带的JAVA程序包即可] 返回页首
[通过dde和OPC这两种途径来完成] 返回页首
修订日期:2004年11月24日
WEB发布 file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh85AE.htm
2011-2-28
组态王6
1. 组态王web发布时的常见注意事项? 2. 在作为WEB服务器的计算机上用IE客户端无法访问到组态王WEB服务器? 3. 在与WEB服务器相连的局域网其他计算机上用IE客户端无法访问到组态王WEB服务器? 4. 用IE客户端能够访问到组态王WEB服务器,但是只能看到上部的组态王的图标。其他空白? 5. 用IE客户端能够访问到组态王WEB服务器,在进度条进度程序完成后,白屏,画面不显示? 6. 用IE客户端能够访问到组态王WEB服务器,在进度条进度程序完成后,画面呈灰色,不能正常显示? 7. 用户在公共网络上进行组态王web发布的条件? 8. 用户在局域网进行组态王web发布,通过域名映射发布到广域公共网上的注意事项? 9. 组态王网页发布后,IE画面上某些字体无法正常显示,被一个个的小方块代替了? 10. 组态王网页发布后,IE画面上的实时数据有些刷新,有些不刷新?
组态王常见问题的解决方法
-WORD格式--可编辑-组态王常见问题的解决方法组态王虽然国内用的很多,但他的问题也很多,有时候弄起来真的很麻烦,比如一个简单的开机自动运行都要自己设置,下面是我在网上查到的一些内容。
组态王使用常见问题1、变量设定中最大(小)值及最大(小)原始值的意义?[最大(小)值是变量在现实中表达的工程值(如:温度、压力等)的大小,而最大(小)原始值是采集设备中 [寄存器 ] 数字量的最大(小)值(如板卡中的 819-4095 等)。
一般对于板卡设备此值为物理量经 AD 转换之后的值,如 12BitAD 此值范围 0~4096 、 16BitAD 为0~65535,对于 PLC 、智能仪表、变频器,其本身已将物理值转换为工程值所以此时最大(小)值与最大(小)原始值在设置时是一致的.2、为什么变量无法删除,如何删除变量?[在组态王中,只有未使用的变量才能被删除,因此在删除变量之前,必须去掉在画面或命令语言、控件引用处,等处与之有关的连接,如果还是无法删除,在工程浏览器中执行工具-更新变量计数命令,重新统计变量,在变量使用报告中可以查询变量是否还在某些地方使用,将其连接断开后,利用工具-删除未用变量将变量删除。
3、工程运行时,显示通讯协议组件失败?[设备驱动安装错误:1、安装新的驱动2、在开发状态下从新连接设备,如果还是有错误,请联系驱动部索要新的驱动程序]4、光盘上的典型案例无法打开?[将工程拷贝到硬盘上将属性改为存档即可5、如何在打开机器时自动进入组态王?[将 touchview 快捷方式拷贝到系统开始程序启动中6、怎样把工程文件变小?[可以删除 *.AL2 (报警信息文件), *.REC (历史记录文件), *.111文件( *.pic文件的备份文件)的文件。
7、如何在线增删用户及用户密码和权限?[使用 editusers()函数(用户权限需大于900) ]8、在定义变量的基本属性时状态栏中的保存数值、保存参数是什么意思?[保存参数:在系统运行时,修改变量的域的值(可读可写型),系统自动保存这些参数值,系统退出后,其参数值不会发生变化。
组态王报表保存成excel
组态王报表保存成excel文件格式改变解决方案组态王内嵌的表格可以做成各种很精美的格式,也可以保存成.xls格式和.csv格式,但是原来的格式会荡然无存,很不方便。
下图是组态王报表格式(组态王6.52):下面是保存成excel之后的格式:下图是应用次解决方案后的最终效果图:下面我们来说明次方案的步骤:1.“打开文件”按钮命令语言:StartApp("F:\aa.xls");2.“文件另存为”按钮命令语言:ActivateApp("Excel.exe");ActivateApp("Excel.exe");SendKeys("%(f)abb.xls%(s)%(f)x");3.“文件转移”按钮命令语言:string filename;filename="F:\report\"+StrFromReal( \\本站点\$时, 0, "f" )+StrFromReal( \\本站点\$分, 0, "f" )+StrFromReal( \\本站点\$秒, 0, "f" )+".xls";ReportSaveAs("Report0",fileName);FileDelete( filename );FileMove( "F:\bb.xls", filename , DoneTag );说明:1.这部分是整个解决方案的核心。
利用的是组态王的报表可以保存成以时间为文件名的xls文件,同时FileMove这个函数在文件转移的时候的名字也是可以改变的。
2.“文件另存为”按钮和“文件转移”按钮里的命令语言不要写在一起,否则命令语言不执行,要让这个程序自动执行,可以做定时器实现。
4.组态王报表数据传递到excel组态王中建立excel 的dde连接,报表中所有数据均要建立dde变量,应用程序命令语言中通过赋值语言进行实时刷新。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
组态王报表保存成excel文件格式改变解决方案
组态王内嵌的表格可以做成各种很精美的格式,也可以保存成.xls格式和.csv格式,但是原来的格式会荡然无存,很不方便。
下图是组态王报表格式(组态王6.52):
下面是保存成excel之后的格式:
下图是应用次解决方案后的最终效果图:
下面我们来说明次方案的步骤:
1.“打开文件”按钮命令语言:StartApp("F:\aa.xls");
2.“文件另存为”按钮命令语言:
ActivateApp("Excel.exe");
ActivateApp("Excel.exe");
SendKeys("%(f)abb.xls%(s)%(f)x");
3.“文件转移”按钮命令语言:
string filename;
filename="F:\report\"+StrFromReal( \\本站点\$时, 0, "f" )+StrFromReal( \\本站点\$分, 0, "f" )+StrFromReal( \\本站点\$秒, 0, "f" )+".xls";
ReportSaveAs("Report0",fileName);
FileDelete( filename );
FileMove( "F:\bb.xls", filename , DoneTag );
说明:
1.这部分是整个解决方案的核心。
利用的是组态王的报表可以保存成以时间为文件名的xls文件,同时FileMove这个函数在文件转移的时候的名字也是可以改变的。
2.“文件另存为”按钮和“文件转移”按钮里的命令语言不要写在一起,否则命令语言不执行,要让这个程序自动执行,可以做定时器实现。
4.组态王报表数据传递到excel
组态王中建立excel 的dde连接,报表中所有数据均要建立dde变量,应用程序命令语言中通过赋值语言进行实时刷新。
新保存指定文件名的excel解决方案:
1.建一个excel模板ee.xls(必要时隐藏最上一行)
2.复制模板到aa文件夹下ee.xls
3.导出excel到aa下的ee.xls
4.移动ee.xls到指定的文件夹下,可以用此移动命令改为想要的名字,如bb.xls
5.完成。
命令按钮如下
\\本站点\app_inf=InfoAppDir();
String adde; String adda; String addc; String addb;
adda=\\本站点\app_inf+"\aa.xls";
addc=\\本站点\app_inf+"\report";
addb=\\本站点\app_inf+"\report\aa.xls";
adde=\\本站点\导出+\\本站点\报告编号.Comment+".xls";
6.ReportSaveAs("曲线",adda); 导出excel到aa下的ee.xls
FileCopy(adda, addc, \\本站点\文件转移标志);
FileMove( addb,adde, \\本站点\文件转移标志);
filename=filename+\\本站点\$日期+StrFromint(\\本站点\$时,10)+"时"+StrFromint(\\本站点
\$分,10)+"分"+StrFromint(\\本站点\$秒,10)+"秒.xls";//建立一时间为文件名的EXECL文件
夹。