组态王中的数据报表制作与保存
组态王报表演示说明
报表演示说明1、本演示分为日报、月报、年报2、日报的生成:对于日报可以每小时输入一个数据,然后进行统计后每天生成一个报表日报生成的命令语言见事件命令语言的条件为:$分==0 && $秒==0,消失时注意:a、报表函数命令执行时报表控件所在的画面必须打开,因此对于画面不多的情况下可以在工程运行时将后台处理画面打开并隐含起来,同时所有其它的画面属性都应为覆盖式。
如果画面较多无法全部将画面属性设为覆盖式则可以在报表命令语言执行前执行打开画面的命令b、在新的一天开始时需要使用新的报表文件,因此需要在调用前需要判断当天的报表文件是否已经创建,如果没有创建则需要进行创建c、对于日报的统计主要针对每天持续运行的情况,对于不能保证持续运行的现场可以参照月报的统计方式b、报表的查询在日报查询页,可以对报表文件进行读取、删除等操作{string ()+"日报\"+ StrFromReal( \\本站点\$年, 0,"f" )+"y"+StrFromReal(\\本站点\$月, 0, "f" )+"m"+StrFromReal(\\本站点\$日, 0, "f" )+".rtl";//自定义变量long return01=InfoFile( , 1, \\本站点\$分 );//判断日报目录下是否已经有当天的报表文件了if (return01==0){string ()+"报表\日报.rtl";ReportLoad("Report5",);()+"日报\"+StrFromReal( \\本站点\$年, 0, "f" )+"y"+StrFromReal( $月, 0, "f" )+"m"+StrFromReal( $日, 0, "f" )+".rtl";ReportSaveAs("Report5",);}//如果没有报表文件则从报表目录下调取模板创建报表文件ReportLoad("Report5",);ReportSetCellString("report5", 3,10, \\本站点\$日期);long hang=\\本站点\$时+6;string timestr=time(\\本站点\$时,0,0);ReportSetCellString("report5", hang,1, timestr);ReportSetCellValue("report5", hang,2,\\本站点\颗粒物); ReportSetCellValue("report5", hang,3,\\本站点\颗粒物折算); ReportSetCellValue("report5", hang,4, \\本站点\SO2); ReportSetCellValue("report5", hang,5, \\本站点\SO2折算); ReportSetCellValue("report5", hang,6, \\本站点\NO2);ReportSetCellValue("report5", hang,7, \\本站点\NO2折算); ReportSetCellValue("report5", hang,8, \\本站点\流量); ReportSetCellValue("report5", hang,9, \\本站点\O2); ReportSetCellValue("report5", hang,10, \\本站点\温度); ReportSetCellValue("report5", hang,11, \\本站点\水分); ReportSaveAs("Report5",);}3、月报的生成月报中需要每天的统计数据,该数据为每天的平均值,如果需要其它的统计数据也可照此方法进行处理。
组态王数据保存
组态王数据保存功能介绍工业自动化技术发布交流文章介绍如何将组态王的数据存入access数据库中。
1、首先创建一个access数据库,命名为组态王.mdb,mdb文件是老版本的access数据库文件,如果使用的是新版本数据库,可以选择另存为mdb文件。
2、创建表格:将表格名称命名为“成绩”并打开表格进行制作,字段名称分别为学号、姓名、语文、数学、英语,其中学号与姓名数据类型均为“短文本”;语文数学英语数据类型为“数字”完成后保存。
3、设置ODBC数据源,在win7系统下的步骤如下C:\Windows\SysWOW64”,双击该目录下的“odbcad32.exe”件,进入ODBC数据源管理界面(必须使用该数据源设置);双击打开ODBC数据源管理器,选择系统DSN,点击右侧添加按钮弹出“创建新数据”窗口选择Microsoft Access Driver (*.mdb)” 驱动,点击“完成”。
输入数据源的名称,根据需要对数据源进行命名,如“组态王”,点击“选择(S)”,选择我们前面定义的数据库文件“D:\ 组态王\数据库.mdb”。
点击“确定”完成ODBC数据源的设置。
4、打开组态王软件:单击数据词典新建变量,建立与班级表格内一样的变量及类型,学号、姓名、语文、数学、英语(注意这些变量的名称可以与数据库表格中的不一样)。
此外还应该建立一个用于数据库操作的整数型变量DeviceID,如下图所示。
5、选择并打开SQL访问管理器下的记录体。
进行记录体创建,命名为成绩(这个名字是任意的),添加于成绩表格相同的字段名称(字段名称必须与成绩表格中的名称完全对应),点击确认完成记录体创建。
6、打开命令语言—应用程序命令语言,双击进入,在启动时对话框中写入图中代码。
改代码用于组态王连接上面建好的数据源(数据源名称为组态王)。
7、新建并组态画面:分别将建好的学号、姓名等变量进行关联,学号与姓名要选择字符串输入输出;语文、数学、英语要选择模拟值输入输出。
掌握组态软件的数据管理与报表生成
掌握组态软件的数据管理与报表生成在现代工业自动化领域中,组态软件被广泛应用于监控和控制系统的设计和运行。
作为一种重要的工具,组态软件不仅可以对设备进行配置和参数设置,还能实时监测和管理设备的数据,并生成相应的报表。
本文将重点讨论如何掌握组态软件的数据管理与报表生成。
一、数据管理数据管理是组态软件的核心功能之一,通过正确的数据管理,可以实现对设备和生产过程的有效监控和控制。
1. 数据采集与处理组态软件能够与各类传感器和设备进行数据接口,实时采集设备的数据。
首先,我们需要了解设备所支持的数据采集方式,包括模拟量采集、数字量采集和通信接口采集等。
然后,将采集的原始数据进行处理,比如滤波、放大、标定等,以获取准确可靠的数据。
2. 数据存储与管理组态软件通常提供数据存储和管理的功能,包括数据存储的位置和格式选择,数据存储周期的设置,数据的备份和恢复等。
我们需要根据实际需求选择合适的数据存储方式,比如本地数据库存储或云端存储,以及合适的数据格式,比如文本、Excel、数据库等。
3. 数据分析与处理数据分析是提取数据中有用信息的过程,为后续的报表生成和决策提供支持。
组态软件通常提供各种数据分析工具和算法,比如统计分析、趋势分析、故障诊断等。
我们需要掌握这些工具和算法的使用方法,以便准确、有效地分析和处理数据。
二、报表生成报表生成是组态软件的重要功能之一,通过报表,可以将数据可视化、形成图表和图像等形式的结果,为决策和监控提供依据。
1. 报表格式设计在生成报表之前,我们需要对报表的格式进行设计,包括报表的布局、表头、表格、图表等元素的设计。
我们应根据实际需求和用户要求,灵活设置报表的格式,以便直观、清晰地展示数据。
2. 报表内容填充生成报表时,我们需要将之前采集和处理的数据填充到相应的报表中。
在填充报表内容时,要确保数据的准确性和完整性,并根据需要进行格式化处理,比如添加单位、计算统计指标等。
3. 报表导出与共享生成的报表通常可以导出为不同格式的文件,比如PDF、Excel、图片等。
组态王软件详细教程第七讲报表系统
组态王软件详细教程第七讲报表系统(总9页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除第七讲报表系统第一节组态王内嵌数据报表数据报表的用途数据报表是反应生产过程中的数据、状态等,并对数据进行记录的一种重要形式。
是生产过程必不可少的一个部分。
它即能反应系统实时的生产情况,也能对长期的生产过程进行统计、分析,使管理人员能够实时掌握和分析生产情况。
组态王提供内嵌式报表系统,工程人员可以任意设置报表格式,对报表进行组态。
组态王为工程人员提供了丰富的报表函数,实现各种运算、数据转换、统计分析、报表打印等。
即可以制作实时报表,也可以制作历史报表。
另外,工程人员还可以制作各种报表模板,实现多次使用,以免重复工作。
制作实时数据报表在组态王工具箱内选择“报表窗口”工具,在报表画面上绘制报表。
如下图所示:双击报表窗口的灰色部分(表格单元格区域外没有单元格的部分),弹出“报表设计”对话框,对话框定义如下图所示:在“报表控件名”对话框中输入报表控件名称:实时数据报表,这个控件名会在报表函数中引用。
在行数对话框中输入所要制作的报表的大致行数15本讲介绍报表系统的创建和格式设置介绍报表函数介绍报表系统的组态介绍报表模板在列数对话框中输入所要制作的报表的大致列数6单击对话框的“确认”按钮。
则组态王报表画面如下图所示:设置表头格式设计表头:选中“b1”到“e2”的单元格区域,从报表工具箱上单击“合并单元格”按钮,在报表工具箱的编辑框里输入文本“实时数据报表”,单击“输入”按钮;或双击合并的单元格,使输入光标位于该单元格中,然后输入上述文本。
单击报表工具箱中的“设置单元格格式”按钮,设置单元格格式如下:数字—常规;字体—隶书、规则、一号、红色;对齐方式:水平—居中,垂直—居中;图案—设置单元格底纹颜色为灰色。
如下图所示。
设计报表时间在单元格“d3”中显示当前日期,双击该单元格,然后输入函数“=Date($年,$月,$日)”。
组态王中的数据报表制作与保存
组态王中的数据报表制作与保存组态王中的数据报表制作与保存摘要:本文主要介绍如果使用组态王来构建数据报表,并以EXCEL的格式在指定的文件路径保存。
关键字:组态王历史库数据报表制作保存一、引言数据报表是反应生产过程中的数据、状态等,并对数据进行记录的一种重要形式。
它既能反映系统实时的生产情况,也能对长期的生产过程进行统计、分析,使管理人员能够实时掌握和分析生产情况。
组态王提供内嵌式报表系统,工程人员可以任意设置报表格式,对报表进行组态。
组态王为工程人员提供了丰富的报表函数,实现各种运算、数据转换、统计分析、报表打印等。
既可以制作实时报表,也可以制作历史报表。
组态王还支持运行状态下单元格的输入操作,在运行状态下通过鼠标拖动改变行高、列宽。
另外,工程人员还可以制作各种报表模板,实现多次使用,以免重复工作。
二、数据报表的制作数据报表分为实时数据报表和历史数据报表2类。
报表的构建方法如下: 在画面内,使用工具箱中的报表窗口按钮创建一个报表窗口,如图1所示。
图1 创建后的报表窗口用鼠标双击报表窗口的灰色部分,弹出“报表设计”对话框,该对话框主要设置报表的名称、报表表格的行列数目以及选择套用表格的样式。
1、制作实时数据报表实时数据报表是实时显示相关变量的数据值,在报表窗口的单元格中直接引用变量来实现。
在报表的单元格中直接输入“=变量名”,既可在运行时在该单元格中显示该变量的数值,当变量的数据发生变化时,单元格中显示的数值也会被实时刷新。
2、制作历史数据报表历史数据报表是从组态王的历史库中查询相关变量的历史数据,并在历史数据报表内显示,因此对历史数据报表要查询的数据必须设置历史记录属性。
在组态王中,离散型、整型和实型变量支持历史记录,字符串型变量不支持历史记录。
组态王的历史记录形式可以分为数据变化记录、定时记录(最小单位为1分钟)和备份记录。
记录形式的定义通过变量属性对话框中提供的选项完成。
如图2所示。
图 2 记录属性设置在查询时,希望弹出一个对话框,可以在对话框上随机选择不同的变量和时间段来查询数据,可使用函数ReportSetHistData2(StartRow,StartCol)。
组态王自动保存报表指定单元格数据
组态王自动保存报表指定单元格数据
要实现组态王自动保存报表指定单元格的数据,可以按照以下步骤进行操作:
1. 打开组态王软件,并创建报表。
2. 在报表中选择要自动保存数据的指定单元格。
例如,如果要保存A1单元格的数据,则选择A1单元格。
3. 在选中的单元格上右键单击,然后选择"图形/动画相关"->"数据插入关键I/O"。
4. 在弹出的窗口中,选择要保存数据的I/O点。
这可以是任何一个在组态王中可用的I/O点。
确定选择后,点击"确定"。
5. 在弹出的窗口中,选择要保存数据的I/O点的属性,例如数据类型和保存的文件路径。
点击"确定"。
6. 现在,当报表中所选的单元格中的数据发生变化时,这些变化将自动保存到指定的文件中。
请注意,以上步骤可能因组态王的版本而略有差异。
它们仅提供了一个大致的指导,具体操作可能需要根据实际情况进行微调。
组态王历史数据导出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表格。
组态王中的数据报表制作与保存教学提纲
组态王中的数据报表制作与保存组态王中的数据报表制作与保存摘要:本文主要介绍如果使用组态王来构建数据报表,并以EXCEL的格式在指定的文件路径保存。
关键字:组态王历史库数据报表制作保存一、引言数据报表是反应生产过程中的数据、状态等,并对数据进行记录的一种重要形式。
它既能反映系统实时的生产情况,也能对长期的生产过程进行统计、分析,使管理人员能够实时掌握和分析生产情况。
组态王提供内嵌式报表系统,工程人员可以任意设置报表格式,对报表进行组态。
组态王为工程人员提供了丰富的报表函数,实现各种运算、数据转换、统计分析、报表打印等。
既可以制作实时报表,也可以制作历史报表。
组态王还支持运行状态下单元格的输入操作,在运行状态下通过鼠标拖动改变行高、列宽。
另外,工程人员还可以制作各种报表模板,实现多次使用,以免重复工作。
二、数据报表的制作数据报表分为实时数据报表和历史数据报表2类。
报表的构建方法如下:在画面内,使用工具箱中的报表窗口按钮创建一个报表窗口,如图1所示。
图1 创建后的报表窗口用鼠标双击报表窗口的灰色部分,弹出“报表设计”对话框,该对话框主要设置报表的名称、报表表格的行列数目以及选择套用表格的样式。
1、制作实时数据报表实时数据报表是实时显示相关变量的数据值,在报表窗口的单元格中直接引用变量来实现。
在报表的单元格中直接输入“=变量名”,既可在运行时在该单元格中显示该变量的数值,当变量的数据发生变化时,单元格中显示的数值也会被实时刷新。
2、制作历史数据报表历史数据报表是从组态王的历史库中查询相关变量的历史数据,并在历史数据报表内显示,因此对历史数据报表要查询的数据必须设置历史记录属性。
在组态王中,离散型、整型和实型变量支持历史记录,字符串型变量不支持历史记录。
组态王的历史记录形式可以分为数据变化记录、定时记录(最小单位为1分钟)和备份记录。
记录形式的定义通过变量属性对话框中提供的选项完成。
如图2所示。
图 2 记录属性设置在查询时,希望弹出一个对话框,可以在对话框上随机选择不同的变量和时间段来查询数据,可使用函数ReportSetHistData2(StartRow,StartCol)。
组态王月报表制作
组态王报表制作第一步,新建“后台处理”画面,其风格与后面的“日报”画面一致,只是少了一些按钮及组合图框。
如下图报表控件为:report5第二步,新建“后台月报”画面,其风格与后面的“月报”画面一致,只是少了一些按钮及组合图框。
如下图报表控件为:report7第三步:执行指令生成日报及月报文件(后缀名为rtl,同时可生成.xls文件)在“事件命令语言”中新建两个事件:1、第一个事件为:\\本站点\$分==0&&\\本站点\$秒==0在该事件“消失时”写入如下脚本(该事件为每个小时写入一次数据):string FileName1=InfoAppDir()+"日报\"+ StrFromReal(\\本站点\$年, 0, "f")+"y"+StrFromReal(\\本站点\$月, 0, "f")+"m"+StrFromReal(\\本站点\$日, 0, "f" )+".rtl";//自定义变量long return01=InfoFile( Filename1, 1,\\本站点\$分);//判断日报目录下是否已经有当天的报表文件了if (return01==0){string FileName=InfoAppDir()+"报表\日报.rtl";ReportLoad("Report5",FileName);FileName=InfoAppDir()+"日报\"+StrFromReal( \\本站点\$年, 0,"f" )+"y"+StrFromReal($月, 0, "f" )+"m"+StrFromReal($日, 0, "f" )+".rtl"; ReportSaveAs("Report5",FileName);}//如果没有报表文件则从报表目录下调取模板创建报表文件ReportLoad("Report5",FileName1);ReportSetCellString("report5", 3,10,\\本站点\$日期);long hang=\\本站点\$时+6;//定义写入不同时间写入不同的行,将0点至1点的写入第六行,后面的往后加string timestr=time(\\本站点\$时,0,0); //定义时间变量ReportSetCellString("report5", hang,1,timestr);ReportSetCellValue("report5",hang,2,\\本站点\颗粒物);ReportSetCellValue("report5",hang,3,\\本站点\颗粒物折算);ReportSetCellValue("report5", hang,4,\\本站点\SO2);ReportSetCellValue("report5", hang,5,\\本站点\SO2折算);ReportSetCellValue("report5", hang,6,\\本站点\NO2);ReportSetCellValue("report5", hang,7,\\本站点\NO2折算);ReportSetCellValue("report5", hang,8,\\本站点\流量);ReportSetCellValue("report5", hang,9,\\本站点\O2);ReportSetCellValue("report5", hang,10,\\本站点\温度);ReportSetCellValue("report5", hang,11,\\本站点\水分);//ReportSetCellString就是将变量数值写入到报表的那一列中ReportSaveAs("Report5",FileName1);//将数据保存到报表中2、第二个事件为:\\本站点\$时==23在该事件“消失时”写入如下脚本(该事件为每天写入一次数据):string reportname2=StrFromReal(\\本站点\$年, 0, "f" )+StrFromReal(\\本站点\$月, 0, "f" )+".rtl";//====================string FileName;//自定义变量FileName=InfoAppDir()+"月报\"+reportname2;long return02=InfoFile( Filename, 1,\\本站点\$分);ShowPicture("后台月报");HidePicture("后台月报");//判断月报目录下是否已经有当月的报表文件了if (return02==0){FileName=InfoAppDir()+"报表\月报.rtl";ReportLoad("Roport7",FileName);FileName=InfoAppDir()+"月报\"+ reportname2;Reportsaveas("Roport7",FileName);\\本站点\日计数=0;}//如果当月的月报文件还没有产生则调入月报.rtl文件并按规定格式保存报表文件FileName=InfoAppDir()+"月报\"+StrFromReal( \\本站点\$年, 0,"f")+StrFromReal(\\本站点\$月, 0, "f" )+".rtl";ReportLoad("Report7",FileName);long hang;hang= $日+5;\\本站点\日计数=\\本站点\日计数+1;string str;long Value;str=ReportGetCellString("Report5", 3,10); ReportSetCellString("Report7", hang, 1,str); Value=ReportGetCellValue("Report5", 30,2); ReportSetCellValue("Report7", hang, 2,Value); Value=ReportGetCellValue("Report5", 30,3); ReportSetCellValue("Report7", hang, 3,Value); Value=ReportGetCellValue("Report5", 30,4); ReportSetCellValue("Report7", hang, 4,Value); Value=ReportGetCellValue("Report5", 30,5); ReportSetCellValue("Report7", hang, 5,Value); Value=ReportGetCellValue("Report5", 30,6); ReportSetCellValue("Report7", hang, 6,Value); Value=ReportGetCellValue("Report5", 30,7); ReportSetCellValue("Report7", hang, 7,Value); Value=ReportGetCellValue("Report5", 30,8); ReportSetCellValue("Report7", hang, 8,Value); Value=ReportGetCellValue("Report5", 30,9); ReportSetCellValue("Report7", hang, 9,Value); Value=ReportGetCellValue("Report5", 30,10); ReportSetCellValue("Report7", hang, 10,Value);ReportSetCellValue("Report7", hang, 11,Value); //将日报表中的统计数据(平均值)输入到月报表中Value=ReportGetCellValue("Report7", 39,2); Value=Value/\\本站点\日计数; ReportSetCellValue("Report7", 37, 2,Value); Value=ReportGetCellValue("Report7", 39,3); Value=Value/\\本站点\日计数; ReportSetCellValue("Report7", 37, 3,Value); Value=ReportGetCellValue("Report7", 39,4); Value=Value/\\本站点\日计数; ReportSetCellValue("Report7", 37, 4,Value); Value=ReportGetCellValue("Report7", 39,5); Value=Value/\\本站点\日计数; ReportSetCellValue("Report7", 37, 5,Value); Value=ReportGetCellValue("Report7", 39,6); Value=Value/\\本站点\日计数; ReportSetCellValue("Report7", 37, 6,Value); Value=ReportGetCellValue("Report7", 39,7); Value=Value/\\本站点\日计数;Value=ReportGetCellValue("Report7", 39,8);Value=Value/\\本站点\日计数;ReportSetCellValue("Report7", 37, 8,Value);Value=ReportGetCellValue("Report7", 39,9);Value=Value/\\本站点\日计数;ReportSetCellValue("Report7", 37, 9,Value);Value=ReportGetCellValue("Report7", 39,10);Value=Value/\\本站点\日计数;ReportSetCellValue("Report7", 37, 10,Value);Value=ReportGetCellValue("Report7", 39,11);Value=Value/\\本站点\日计数;ReportSetCellValue("Report7", 37, 11,Value);//将累计值转换为平均值Reportsaveas("Report7",FileName);ClosePicture("后台月报");第四步、新建“日报”“月报”这几个画面1、在“日报”中放置一个报表控件、一简单组合框控件及几个按钮,如下图:其中(1)、报表控件名为:report1(2)、组合图框名为:日报查询变量名为:日报表(3)、“刷新列表”按钮在“命令语言链接—弹起时”写入如下脚本string FileName; //定义变量FileName=InfoAppDir()+"日报\"+"*.rtl"; //日报表存放路径,InfoAppDir()为程序文件存放路径listClear("日报查询"); //清除组合图框中的列表ListLoadFileName( "日报查询", FileName ); //读取日报存放路径中的报表文件显示在组合图框中(4)、“查询日报”按钮在“命令语言链接—弹起时”写入如下脚本stringFileName; //定义变量FileName=InfoAppDir()+"日报\"+\\本站点\日报表; //组合图框中选中的报表文件,,InfoAppDir()为程序文件存放路径,\\本站点\日报表为组合图框的变量名ReportLoad("Report1",FileName); //将读取的报表显示在报表控件中(5)、“打印”按钮在“命令语言链接—弹起时”写入如下脚本ReportPrint2("Report1"); //使用ReportPrint2("Report1",0)指令,可以在打印前弹出打印机选择窗口2、在“月报”中放置一个报表控件、一简单组合框控件及几个按钮,如下图:其中(1)、报表控件名为:月报(2)、组合图框名为:月报查询变量名为:报表名(3)、“刷新列表”按钮在“命令语言链接—弹起时”写入如下脚本string FileName; //定义变量FileName=InfoAppDir()+"月报\"+"*.rtl"; //月报表存放路径,InfoAppDir()为程序文件存放路径listClear("月报查询"); //清除组合图框中的列表ListLoadFileName( "月报查询", FileName ); //读取月报存放路径中的报表文件显示在组合图框中(4)、“查询日报”按钮在“命令语言链接—弹起时”写入如下脚本stringFileName; //定义变量FileName=InfoAppDir()+"月报\"+\\本站点\报表名; //组合图框中选中的报表文件,,InfoAppDir()为程序文件存放路径,\\本站点\报表名为组合图框的变量名ReportLoad("月报",FileName); //将读取的报表显示在报表控件中(5)、“打印”按钮在“命令语言链接—弹起时”写入如下脚本ReportPrint2("月报"); //使用ReportPrint2("月报",0)指令,可以在打印前弹出打印机选择窗口运行程序即可获取报表了。
组态王的年月报表
组态王的年⽉报表(1)建⽴报表的步骤将《实时数据》插⼊到《⽇报表后台数据的累计量》插⼊到《⽉报表后台累计量》插⼊到《年报表后台》//........................................................................................................................................................................................................................................................................................................................................... //每⼩时将repot7的实时数据插⼊到report 6中,long hang;hang= \\本站点\$时+3;//定位long Value;Value=ReportGetCellValue("Report7", 4, 2);//获取指定报表单元格的数值ReportSetCellValue("Report6", hang, 2, Value);//将指定报表的指定单元格设定为指定值Value=ReportGetCellValue("Report7", 4, 3);ReportSetCellValue("Report6", hang, 3, Value);Value=ReportGetCellValue("Report7", 4, 4);ReportSetCellValue("Report6", hang, 4, Value);Value=ReportGetCellValue("Report7", 4, 5);ReportSetCellValue("Report6", hang, 5, Value);Value=ReportGetCellValue("Report7", 4, 6);ReportSetCellValue("Report6", hang, 6, Value);Value=ReportGetCellValue("Report7", 4, 7);ReportSetCellValue("Report6", hang, 7, Value);Value=ReportGetCellValue("Report7", 4, 8);ReportSetCellValue("Report6", hang, 8, Value);Value=ReportGetCellValue("Report7", 4, 9);ReportSetCellValue("Report6", hang, 9, Value);Value=ReportGetCellValue("Report7", 4, 10);ReportSetCellValue("Report6", hang, 10, Value);Value=ReportGetCellValue("Report7", 4, 11);ReportSetCellValue("Report6", hang, 11, Value);Value=ReportGetCellValue("Report7", 4, 12);ReportSetCellValue("Report6", hang, 12, Value);Value=ReportGetCellValue("Report7", 4, 13);ReportSetCellValue("Report6", hang, 13, Value);Value=ReportGetCellValue("Report7", 4, 14);ReportSetCellValue("Report6", hang, 14, Value);Value=ReportGetCellValue("Report7", 4, 15);ReportSetCellValue("Report6", hang, 15, Value);//将实时报表report 7中的统计数据输⼊到⽇报表后台中//填写时间string temp;long StartTime;long y;StartTime=cyl_HTConvertTime(\\本站点\$年,\\本站点\$⽉,\\本站点\$⽇,0,0,0);//获取选着时间的长整形单位y=StartTime+\\本站点\$时*3600;temp=StrFromTime( y, 2 );ReportSetCellString("Report6", hang, 1, temp);ReportSetCellString("Report6", 28, 1, "当天累积");//填充ReportSetCellString("Report6", 29, 1, "备注");//填充//............................................................................................................................................................................................................................................................................................................................................ ReportSetCellString2("Report6", 4, 1, 27, 8, " "); //清空单元格//............................................................................................................................................................................................................................................................................................................................................(1)查询⽉报string FileName;FileName=InfoAppDir()+"⽉报\"+\\本站点\报表名;ReportLoad("⽉报",FileName);//............................................................................................................................................................................................................................................................................................................................................(2)删除⽉报string FileName;FileName=InfoAppDir()+"⽉报\"+\\本站点\报表名;FileDelete( Filename );string FileName1;FileName1=InfoAppDir()+"⽉报\*.rtl";listClear("⽉报查询");ListLoadFileName( "⽉报查询", FileName1 );//............................................................................................................................................................................................................................................................................................................................................(3)刷新⽉报string FileName;FileName=InfoAppDir()+"⽉报\"+"*.rtl";listClear("⽉报查询");ListLoadFileName( "⽉报查询", FileName );//............................................................................................................................................................................................................................................................................................................................................//每天定时将⽇报后台reprot 6中的累积量插⼊到⽉报表reprot5后台中string reportname2=StrFromReal( \\本站点\$年, 0, "f" )+StrFromReal( \\本站点\$⽉, 0, "f")+".rtl";//把年⽉转化为字符串⽤来命名//====================string FileName;//⾃定义变量FileName=InfoAppDir()+"⽉报\"+reportname2;long return02=InfoFile( Filename, 1, \\本站点\$分 );//查找⽂件是否存在,找不到返回0 ShowPicture("⽉报后台");//HidePicture("⽉报后台");//判断⽉报⽬录下是否已经有当⽉的报表⽂件了if (return02==0)//当前⽬录下没有相应⽉报表报表{FileName=InfoAppDir()+"报表\⽉报.rtl";ReportLoad("Roport5",FileName);//把filename名称⽂件中数据填⼊到report中FileName=InfoAppDir()+"⽉报\"+ reportname2;Reportsaveas("Roport5",FileName);//报存⽉报后台//\\本站点\⽇计数=0;}//如果当⽉的⽉报⽂件还没有产⽣则调⼊⽉报.rtl⽂件并按规定格式保存报表⽂件FileName=InfoAppDir()+"⽉报\"+StrFromReal( \\本站点\$年, 0, "f" )+StrFromReal(\\本站点\$⽉, 0, "f" )+".rtl";ReportLoad("Report5",FileName);//读取指定路径下的报表到当前控件报表long hang;hang= \\本站点\$⽇+3;//定位//\\本站点\⽇计数=\\本站点\⽇计数+1;string str;long Value;long Value1;long Value2;str=ReportGetCellString("Report6", 2, 5);//获取指定报表单元格的⽂本ReportSetCellString("Report5", hang, 1, str);//将指定报表单元格设定为指定字符串//以上为在⽉报第⼀列添加⽇期Value=ReportGetCellValue("Report6", 28, 2);//获取指定报表单元格的数值ReportSetCellValue("Report5", hang, 2, Value);//将指定报表的指定单元格设定为指定值Value=ReportGetCellValue("Report6", 28, 3);ReportSetCellValue("Report5", hang, 3, Value);Value=ReportGetCellValue("Report6", 28, 4);ReportSetCellValue("Report5", hang, 4, Value);Value=ReportGetCellValue("Report6", 28, 5);ReportSetCellValue("Report5", hang, 5, Value);Value=ReportGetCellValue("Report6", 28, 6);ReportSetCellValue("Report5", hang, 6, Value);Value=ReportGetCellValue("Report6", 28, 7);ReportSetCellValue("Report5", hang, 7, Value);Value=ReportGetCellValue("Report6", 28, 8);ReportSetCellValue("Report5", hang, 8, Value);Value=ReportGetCellValue("Report6", 28, 9);ReportSetCellValue("Report5", hang, 9, Value);Value=ReportGetCellValue("Report6", 28, 10);ReportSetCellValue("Report5", hang, 10, Value);Value=ReportGetCellValue("Report6", 28, 11);ReportSetCellValue("Report5", hang, 11, Value);Value=ReportGetCellValue("Report6", 28, 12);ReportSetCellValue("Report5", hang, 12, Value);Value=ReportGetCellValue("Report6", 28, 13);ReportSetCellValue("Report5", hang, 13, Value);Value=ReportGetCellValue("Report6", 28, 14);ReportSetCellValue("Report5", hang, 14, Value);Value=ReportGetCellValue("Report6", 28, 15);ReportSetCellValue("Report5", hang, 15, Value);//将⽇报表中的统计数据当天累积值输⼊到⽉报表中//以下为计算累积值Value1=ReportGetCellValue("Report5", 4, 2);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 2);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 2, Value);Value1=ReportGetCellValue("Report5", 4, 2);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 2);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 2, Value);Value1=ReportGetCellValue("Report5", 4, 3);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 3);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 3, Value);Value1=ReportGetCellValue("Report5", 4, 4);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 4);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 4, Value);Value1=ReportGetCellValue("Report5", 4, 5);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 5);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 5, Value);Value1=ReportGetCellValue("Report5", 4, 6);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 6);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 6, Value);Value1=ReportGetCellValue("Report5", 4, 7);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 7);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 7, Value);Value1=ReportGetCellValue("Report5", 4, 8);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 8);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 8, Value);Value1=ReportGetCellValue("Report5", 4, 9);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 9);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 9, Value);Value1=ReportGetCellValue("Report5", 4, 10);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 10);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 10, Value);Value1=ReportGetCellValue("Report5", 4, 11);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 11);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 11, Value);Value1=ReportGetCellValue("Report5", 4, 12);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 12);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 12, Value);Value1=ReportGetCellValue("Report5", 4, 13);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 13);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 13, Value);Value1=ReportGetCellValue("Report5", 4, 14);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 14);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 14, Value);Value1=ReportGetCellValue("Report5", 4, 15);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 15);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 15, Value);Reportsaveas("Report5",FileName);//HidePicture("⽉报后台");//..........................................................................................................................................................................................................................................................................................................................................//每天定时将⽉报后台reprot 5中的累积量插⼊到年报表后台report 8中string reportname2=StrFromReal( \\本站点\$年, 0, "f" )+".rtl";//把年转化为字符串⽤来命名//====================string FileName;//⾃定义变量FileName=InfoAppDir()+"年报\"+reportname2;long return02=InfoFile( Filename, 1, \\本站点\$分 );//查找⽂件是否存在,找不到返回0ShowPicture("年报后台");//HidePicture("年报后台");//判断年报⽬录下是否已经有当年的报表⽂件了if (return02==0)//当前⽬录下没有相应年报表报表{FileName=InfoAppDir()+"报表\年报.rtl";ReportLoad("Roport8",FileName);//把filename名称⽂件中数据填⼊到report中FileName=InfoAppDir()+"年报\"+ reportname2;Reportsaveas("Roport8",FileName);//报存⽉报后台}//如果当⽉的⽉报⽂件还没有产⽣则调⼊⽉报.rtl⽂件并按规定格式保存报表⽂件FileName=InfoAppDir()+"年报\"+StrFromReal( \\本站点\$年, 0, "f" )+".rtl";ReportLoad("Report8",FileName);//读取指定路径下的报表到当前控件报表long hang;hang= \\本站点\$⽉+3;//定位string str;long Value;long Value1;long Value2;str=ReportGetCellString("Report5", 2, 5);//获取指定报表单元格的⽂本str=StrLeft(str, 7);//裁剪str,只获取⽉ReportSetCellString("Report8", hang, 1, str);//将指定报表单元格设定为指定字符串//以上为在⽉报第⼀列添加⽇期Value=ReportGetCellValue("Report5", 35, 2);//获取指定报表单元格的数值ReportSetCellValue("Report8", hang, 2, Value);//将指定报表的指定单元格设定为指定值Value=ReportGetCellValue("Report5", 35, 3);ReportSetCellValue("Report8", hang, 3, Value);Value=ReportGetCellValue("Report5", 35, 4);ReportSetCellValue("Report8", hang, 4, Value);Value=ReportGetCellValue("Report5", 35, 5);ReportSetCellValue("Report8", hang, 5, Value);Value=ReportGetCellValue("Report5", 35, 6);ReportSetCellValue("Report8", hang, 6, Value);Value=ReportGetCellValue("Report5", 35, 7);ReportSetCellValue("Report8", hang, 7, Value);Value=ReportGetCellValue("Report5", 35, 8);ReportSetCellValue("Report8", hang, 8, Value);Value=ReportGetCellValue("Report5", 35, 9);ReportSetCellValue("Report8", hang, 9, Value);Value=ReportGetCellValue("Report5", 35, 10);ReportSetCellValue("Report8", hang, 10, Value);Value=ReportGetCellValue("Report5", 35, 11);ReportSetCellValue("Report8", hang, 11, Value);Value=ReportGetCellValue("Report5", 35, 12);ReportSetCellValue("Report8", hang, 12, Value);Value=ReportGetCellValue("Report5", 35, 13);ReportSetCellValue("Report8", hang, 13, Value);Value=ReportGetCellValue("Report5", 35, 14);ReportSetCellValue("Report8", hang, 14, Value);Value=ReportGetCellValue("Report5", 35, 15);ReportSetCellValue("Report8", hang, 15, Value);//将⽉报表后台report 5中的统计数据当天累积值输⼊到年报表后台report 8中;Value1=ReportGetCellValue("Report8", 4, 2);//起始值Value2=ReportGetCellValue("Report8", hang, 2);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 2, Value);Value1=ReportGetCellValue("Report8", 4, 3);//起始值Value2=ReportGetCellValue("Report8", hang, 3);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 3, Value);Value1=ReportGetCellValue("Report8", 4, 4);//起始值Value2=ReportGetCellValue("Report8", hang, 4);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 4, Value);Value1=ReportGetCellValue("Report8", 4, 5);//起始值Value2=ReportGetCellValue("Report8", hang, 5);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 5, Value);Value1=ReportGetCellValue("Report8", 4, 6);//起始值Value2=ReportGetCellValue("Report8", hang, 6);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 6, Value);Value1=ReportGetCellValue("Report8", 4, 7);//起始值Value2=ReportGetCellValue("Report8", hang, 7);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 7, Value);Value1=ReportGetCellValue("Report8", 4, 8);//起始值Value2=ReportGetCellValue("Report8", hang, 8);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 8, Value);Value1=ReportGetCellValue("Report8", 4, 9);//起始值Value2=ReportGetCellValue("Report8", hang, 9);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 9, Value);Value1=ReportGetCellValue("Report8", 4, 10);//起始值Value2=ReportGetCellValue("Report8", hang, 10);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 10, Value);Value1=ReportGetCellValue("Report8", 4, 11);//起始值Value2=ReportGetCellValue("Report8", hang, 11);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 11, Value);Value1=ReportGetCellValue("Report8", 4, 12);//起始值Value2=ReportGetCellValue("Report8", hang, 12);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 12, Value);Value1=ReportGetCellValue("Report8", 4, 13);//起始值Value2=ReportGetCellValue("Report8", hang, 13);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 13, Value);Value1=ReportGetCellValue("Report8", 4, 14);//起始值Value2=ReportGetCellValue("Report8", hang, 14);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 14, Value);Value1=ReportGetCellValue("Report8", 4, 15);//起始值Value2=ReportGetCellValue("Report8", hang, 15);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 15, Value);Reportsaveas("Report8",FileName);//HidePicture("年报后台");//............................................................................................................................................................................................................................................................................................................................................。
组态王中的数据报表制作与保存
组态王中的数据报表制作与保存组态王是一款常用的工业自动化软件,在工控领域内得到广泛应用。
在组态王中,可以通过界面配置的方式来实现自动化设备的运行控制和数据采集。
而对于数据的处理和展示,组态王提供了丰富的功能,其中数据报表的制作和保存是其中的重要功能之一。
本文将对组态王中数据报表制作和保存进行详细介绍。
1. 数据报表的制作在组态王中,数据报表的制作需要经过以下几个步骤:1.1 选择数据源首先,在组态王中选择需要展示的数据源,可以选择历史数据、实时数据、手动输入等多种数据源。
选择不同的数据源,会对后续报表的展示和数据处理产生不同的影响。
1.2 新建数据报表在选择了数据源之后,可以在组态王中新建数据报表。
新建数据报表的方法可以通过菜单栏“文件-新增-报表”来实现。
在新建报表时,需要指定报表的名称、报表的类型、和报表的模板。
报表的类型包括静态报表和动态报表,静态报表通常用于展示历史数据,而动态报表则用于实时展示实时数据和控制信息。
而报表的模板,则可以根据需要选择不同的报表样式,或者自定义报表模板。
1.3 设计报表模板在选择了报表模板之后,进入报表设计环节。
在报表设计环节中,需要完成以下几项工作:•将数据源字段拖放到报表中,以实现数据的展示。
•设计报表格式和样式,包括报表标题、表格格式、图表样式等。
•添加报表数据的筛选、过滤及排序方式,以满足不同场景下的数据展示需求。
•配置报表的输出方式,包括输出到本地、邮件、FTP等多种方式。
在完成了以上的工作之后,数据报表的制作就完成了。
此时,可以预览和调试报表,对格式进行微调等操作。
2. 数据报表的保存在组态王中,数据报表的保存可以分为两个部分:前端和后端。
2.1 前端保存在报表制作完成之后,可以通过菜单栏“报表-保存”或者快捷键CTRL + S来完成前端报表的保存。
前端保存包括以下内容:•报表的设计配置信息,包括字段、格式、样式、筛选排序等配置信息。
•报表的数据展示内容,例如表格、图表中的数据展示。
组态王历史数据导出EXCEL表格的方法
组态王历史数据导出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表格。
组态王日报表制作
组态王日报表制作步骤一、定义设备二、定义变量三、制作画面3.1添加画面3.2添加文本与报表3.3添加日历控件并在事件中编辑closeup插入通过控件,如图所示:选择后画到画面上,双击控件,在“常规”选项卡中为控件命名为“ADate”,点击“确定”,保存画面。
再次双击日历控件,选择“事件”选项卡,点击在“事件”选项卡中点击CloseUp事件,弹出控件事件函数编辑窗口,在函数声明中为此函数命名:CloseUp()在编辑窗口中编写脚本程序,在编写脚本程序之前在数据词典中定义字符串变量“选择日期”双击日历控件设置属性如下图程序如下:float Ayear;float Amonth;float Aday;long x;long y;long Row;long StartTime;string temp; Ayear=ADate.Year; Amonth=ADate.Month; Aday=ADate.Day;temp=StrFromInt( Ayear, 10 );if(Amonth<10)temp=temp+"-0"+StrFromInt(Amonth,10);elsetemp=temp+"-"+StrFromInt(Amonth,10);if(Aday<10)temp=temp+"-0"+StrFromInt(Aday,10);elsetemp=temp+"-"+StrFromInt(Aday,10);\\本站点\选择日期=temp;ReportSetCellString2("Report1",4,1,27,6,"");//清空单元格ReportSetCellString("Report1",2,2,temp);//填写日期StartTime=HTConvertTime(Ayear,Amonth,Aday,0,0,0);ReportSetHistData("Report1","\\本站点\IO实数1",StartTime,3600,"B4:B27");//ReportSetHistData("Report1","\\本站点\压力",StartTime,3600,"B4:B27");ReportSetHistData("Report1","\\本站点\温度",StartTime,3600,"C4:C27");ReportSetHistData("Report1","\\本站点\密度",StartTime,3600,"D4:D27");ReportSetHistData("Report1","\\本站点\电流",StartTime,3600,"E4:E27");ReportSetHistData("Report1","\\本站点\电压",StartTime,3600,"F4:F27");x=0;while(x<24){row=4+x;y=StartTime+x*3600;temp=StrFromTime(y,2);ReportSetCellString("Report1",row,1,temp);x=x+1;}添加选择日期变量如下图所示3.4添加打印和保存保存的程序如下:string filename;filename=InfoAppDir()+\\本站点\选择日期+".xls"; ReportSaveAs("Report0",filename);打印预览的程序如下ReportPrintSetup("Report0");详细设置请查看保存和打印文档四、进入运行系统运行系统结果如下图所示:。
组态王保存报表
存表范例
(扩展名为xls,为Excel表格)
数据词典中定义以下两个为内存字符串的变量
在工程管理器中的自定义函数中输入以下程序
上图程序:
string filepath; //定义路径
string name; //文件名中转
string hour; //字符串,时间
string minute; //字符串,分钟
string second; //字符串,秒
string ret; //字符串,返回
filepath="D:\Excel\"; //存表路径,可分类存储
hour=strfromreal($时,0,"f"); //将实型转换成字符串
minute=strfromreal($分,0,"f"); //将实型转换成字符串
second=strfromreal($秒,0,"f"); //将实型转换成字符串
name=filename+$日期+hour+minute+second; //将输入的文件名和日期,时间组合成新的文件名ret=filepath+name+".xls"; //组合路径,文件名,扩展名
return ret; //返回值
下图为按钮中的程序:
上图程序:
报表路径=Reportname(报表); //报表为内存字符串
reportsaveas("AAA",报表路径); //报表路径为内存字符串,AAA为报表控件名称。
组态王软件详细教程 第七讲 报表系统
第七讲报表系统第一节组态王内嵌数据报表➢本讲介绍报表系统的创建和格式设置➢介绍报表函数➢介绍报表系统的组态➢介绍报表模板数据报表的用途数据报表是反应生产过程中的数据、状态等,并对数据进行记录的一种重要形式。
是生产过程必不可少的一个部分。
它即能反应系统实时的生产情况,也能对长期的生产过程进行统计、分析,使管理人员能够实时掌握和分析生产情况。
组态王提供内嵌式报表系统,工程人员可以任意设置报表格式,对报表进行组态。
组态王为工程人员提供了丰富的报表函数,实现各种运算、数据转换、统计分析、报表打印等。
即可以制作实时报表,也可以制作历史报表。
另外,工程人员还可以制作各种报表模板,实现多次使用,以免重复工作。
制作实时数据报表在组态王工具箱内选择“报表窗口”工具,在报表画面上绘制报表。
如下图所示: 双击报表窗口的灰色部分(表格单元格区域外没有单元格的部分),弹出“报表设计”对话框,对话框定义如下图所示:→在“报表控件名”对话框中输入报表控件名称:实时数据报表,这个控件名会在报表函数中引用。
→在行数对话框中输入所要制作的报表的大致行数15→在列数对话框中输入所要制作的报表的大致列数6单击对话框的“确认”按钮。
则组态王报表画面如下图所示:设置表头格式设计表头:选中“b1”到“e2”的单元格区域,从报表工具箱上单击“合并单元格”按钮,在报表工具箱的编辑框里输入文本“实时数据报表”,单击“输入”按钮;或双击合并的单元格,使输入光标位于该单元格中,然后输入上述文本。
单击报表工具箱中的“设置单元格格式”按钮,设置单元格格式如下:数字—常规;字体—隶书、规则、一号、红色;对齐方式:水平—居中,垂直—居中;图案—设置单元格底纹颜色为灰色。
如下图所示。
设计报表时间在单元格“d3”中显示当前日期,双击该单元格,然后输入函数“=Date($年,$月,$日)”。
“e3”中显示当前时间,双击该单元格,然后输入“=Time($时,$分,$秒)”。
组态王软件详细教程--第七讲-报表系统
第七讲报表系统第一节组态王内嵌数据报表数据报表的用途数据报表是反应生产过程中的数据、状态等,并对数据进行记录的一种重要形式。
是生产过程必不可少的一个部分。
它即能反应系统实时的生产情况,也能对长期的生产过程进行统计、分析,使管理人员能够实时掌握和分析生产情况。
组态王提供内嵌式报表系统,工程人员可以任意设置报表格式,对报表进行组态。
组态王为工程人员提供了丰富的报表函数,实现各种运算、数据转换、统计分析、报表打印等。
即可以制作实时报表,也可以制作历史报表。
另外,工程人员还可以制作各种报表模板,实现多次使用,以免重复工作。
制作实时数据报表8 在组态王工具箱内选择“报表窗口”工具,在报表画面上绘制报表。
如下图所示:8 双击报表窗口的灰色部分(表格单元格区域外没有单元格的部分),弹出“报表设计”对话框,对话框定义如下图所示:è 在“报表控件名”对话框中输入报表控件名称:实时数据报表,这个控件名会在报表函数中引用。
➢本讲介绍报表系统的创建和格式设置➢介绍报表函数➢介绍报表系统的组态➢介绍报表模板è在行数对话框中输入所要制作的报表的大致行数15è在列数对话框中输入所要制作的报表的大致列数68 单击对话框的“确认”按钮。
则组态王报表画面如下图所示:8 设置表头格式设计表头:选中“b1”到“e2”的单元格区域,从报表工具箱上单击“合并单元格”按钮,在报表工具箱的编辑框里输入文本“实时数据报表”,单击“输入”按钮;或双击合并的单元格,使输入光标位于该单元格中,然后输入上述文本。
单击报表工具箱中的“设置单元格格式”按钮,设置单元格格式如下:数字—常规;字体—隶书、规则、一号、红色;对齐方式:水平—居中,垂直—居中;图案—设置单元格底纹颜色为灰色。
如下图所示。
8 设计报表时间在单元格“d3”中显示当前日期,双击该单元格,然后输入函数“=Date($年,$月,$日)”。
“e3”中显示当前时间,双击该单元格,然后输入“=Time($时,$分,$秒)”。
组态王日报表制作
组态王日报表制作步骤一、定义设备二、定义变量三、制作画面3.1添加画面3.2添加文本与报表3.3添加日历控件并在事件中编辑closeup插入通过控件,如图所示:选择后画到画面上,双击控件,在“常规”选项卡中为控件命名为“ADate”,点击“确定”,保存画面。
再次双击日历控件,选择“事件”选项卡,点击在“事件”选项卡中点击CloseUp事件,弹出控件事件函数编辑窗口,在函数声明中为此函数命名:CloseUp()在编辑窗口中编写脚本程序,在编写脚本程序之前在数据词典中定义字符串变量“选择日期”双击日历控件设置属性如下图程序如下:float Ayear;float Amonth;float Aday;long x;long y;long Row;long StartTime;string temp; Ayear=ADate.Year; Amonth=ADate.Month; Aday=ADate.Day;temp=StrFromInt( Ayear, 10 );if(Amonth<10)temp=temp+"-0"+StrFromInt(Amonth,10);elsetemp=temp+"-"+StrFromInt(Amonth,10);if(Aday<10)temp=temp+"-0"+StrFromInt(Aday,10);elsetemp=temp+"-"+StrFromInt(Aday,10);\\本站点\选择日期=temp;ReportSetCellString2("Report1",4,1,27,6,"");//清空单元格ReportSetCellString("Report1",2,2,temp);//填写日期StartTime=HTConvertTime(Ayear,Amonth,Aday,0,0,0);ReportSetHistData("Report1","\\本站点\IO实数1",StartTime,3600,"B4:B27");//ReportSetHistData("Report1","\\本站点\压力",StartTime,3600,"B4:B27");ReportSetHistData("Report1","\\本站点\温度",StartTime,3600,"C4:C27");ReportSetHistData("Report1","\\本站点\密度",StartTime,3600,"D4:D27");ReportSetHistData("Report1","\\本站点\电流",StartTime,3600,"E4:E27");ReportSetHistData("Report1","\\本站点\电压",StartTime,3600,"F4:F27");x=0;while(x<24){row=4+x;y=StartTime+x*3600;temp=StrFromTime(y,2);ReportSetCellString("Report1",row,1,temp);x=x+1;}添加选择日期变量如下图所示3.4添加打印和保存保存的程序如下:string filename;filename=InfoAppDir()+\\本站点\选择日期+".xls"; ReportSaveAs("Report0",filename);打印预览的程序如下ReportPrintSetup("Report0");详细设置请查看保存和打印文档四、进入运行系统运行系统结果如下图所示:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
组态王中的数据报表制作与保存
摘要:本文主要介绍如果使用组态王来构建数据报表,并以EXCEL的格式在指定的文件路径保存。
关键字:组态王历史库数据报表制作保存
一、引言
数据报表是反应生产过程中的数据、状态等,并对数据进行记录的一种重要形式。
它既能反映系统实时的生产情况,也能对长期的生产过程进行统计、分析,使管理人员能够实时掌握和分析生产情况。
组态王提供内嵌式报表系统,工程人员可以任意设置报表格式,对报表进行组态。
组态王为工程人员提供了丰富的报表函数,实现各种运算、数据转换、统计分析、报表打印等。
既可以制作实时报表,也可以制作历史报表。
组态王还支持运行状态下单元格的输入操作,在运行状态下通过鼠标拖动改变行高、列宽。
另外,工程人员还可以制作各种报表模板,实现多次使用,以免重复工作。
二、数据报表的制作
数据报表分为实时数据报表和历史数据报表2类。
报表的构建方法如下:
在画面内,使用工具箱中的报表窗口按钮创建一个报表窗口,如图1所示。
图1 创建后的报表窗口
用鼠标双击报表窗口的灰色部分,弹出“报表设计”对话框,该对话框主要设置报表的名称、报表表格的行列数目以及选择套用表格的样式。
1、制作实时数据报表
实时数据报表是实时显示相关变量的数据值,在报表窗口的单元格中直接引用变量来实现。
在报表的单元格中直接输入“=变量名”,既可在运行时在该单元格中显示该变量的数值,当变量的数据发生变化时,单元格中显示的数值也会被实时刷新。
2、制作历史数据报表
历史数据报表是从组态王的历史库中查询相关变量的历史数据,并在历史数据报表内显示,因此对历史数据报表要查询的数据必须设置历史记录属性。
在组态王中,离散型、整型和实型变量支持历史记录,字符串型变量不支持历史记录。
组态王的历史记录形式可以分为数据变化记录、定时记录(最小单位为1分钟)和备份记录。
记录形式的定义通过变量属性对话框中提供的选项完成。
如图2所示。
图2 记录属性设置
在查询时,希望弹出一个对话框,可以在对话框上随机选择不同的变量和时间段来查询数据,可使用函数ReportSetHistData2(StartRow,StartCol)。
该函数已经提供了方便、全面的对话框供用户操作。
但该函数会将指定时间段内查询到的所有数据都填充到报表中来,如果报表不够大,则系统会自动增加报表行数或列数。
如果用户想要一个定时自动查询历史数据的报表,而不是弹出对话框,或者历史报表的格式是固定的,要求将查询到的数据添到固定的表格中,多余查询的数据不需要添到表中,这时可以使用函数ReportSetHistData,ReportSetHistData3或ReportSetHistDataEx通过命令语言来实现。
使用这些函数时,用户需要指定查询的起始时间,查询间隔,和变量数据的填充范围。
组态王报表拥有丰富而灵活的报表函数,用户可以使用报表制作一些数据存储、求和、运算、转换等特殊用法。
三、数据报表的保存
组态王的报表存储函数为:
Long nRet = ReportSaveAs(String szRptName, String szFileName)
函数功能:将指定报表按照所给的文件名存储到指定目录下,ReportSaveAs 支持将报表文件保存为rtl、xls、csv格式。
保存的格式取决于所保存的文件的后缀名。
案例:实现以当前时间作为文件名将数据报表以xls格式保存到指定文件夹下的操作过程如下:
1、在当前工程路径下建立一文件夹:数据文件夹。
2、在“数据报表画面”中添加一按钮,按钮文本为:保存数据报表。
3、在按钮的弹起事件中输入如下命令语言,如图3 所示:
图3 数据保存命令语言窗口
4、命令语言如下所示:
string filename;
filename=InfoAppDir()+"\数据文件夹\"+
StrFromReal( \\本站点\$年, 0, "f" )+
StrFromReal( \\本站点\$月, 0, "f" )+
StrFromReal( \\本站点\$日, 0, "f" )+
StrFromReal( \\本站点\$时, 0, "f" )+
StrFromReal(\\本站点\$分, 0, "f" )+
StrFromReal( \\本站点\$秒, 0, "f" )+".xls";
ReportSaveAs("Report1",filename);
5、单击“确认”按钮关闭命令语言编辑框。
当系统处于运行状态时,单击
此按钮数据报表将以当前时间作为文件名保存数据报表。
Welcome To
Download !!!
欢迎您的下载,资料仅供参考!
6、。