Wincc报表自动导出Excel文件并以时间方式命名
文章目录
- 前言
- 一、报表控件组态
- 1. 建立用户归档变量
- 2. 组态报表控件
- 二、报表定时自动导出
- 1. 添加内部变量
- 2. 添加导出按钮
- 3. 编辑C脚本
- 4. 编辑VBS脚本
- 5. 编辑全局脚本
- 三、实验验证
- 总结
前言
在Wincc上位机组态软件中,可以通过Online TableControl控件实时查看用户归档中的变量数据,该控件还可将报表导出为CSV或PDF文件。本文基于VBS脚本,实现报表文件的自动导出,并将导出的文件以当前时间命名。
一、报表控件组态
1. 建立用户归档变量
首先在变量管理器中建立一些需要归档的变量,并添加到变量归档记录中,如图1所示。
图1
2. 组态报表控件
在画面中添加Online TableControl控件,如图2所示。右键打开对象属性,将控件名称改为“Table”。
图2
双击控件打开属性设置,在数值列界面添加需要显示的变量,如图3所示。其它设置自行选择,这里不再赘述。
图3
此时运行画面文件,即可显示变量的归档值。
二、报表定时自动导出
1. 添加内部变量
在变量管理中添加一个内部变量用于控制报表的定时导出,如图4所示。
图4
2. 添加导出按钮
在报表所在的画面中,添加一个按钮控件,并关联刚才添加的内部变量。
图5
图6
3. 编辑C脚本
在按钮控件的对象属性-事件-按钮-鼠标中,右键选择单击鼠标,添加C动作。
图7
代码如下:
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{SetTagBit("TableExport" ,!GetTagBit("TableExport"));}
该代码表示单击按钮,“Table”变量置位,再次单击按钮,“Table”变量复位。
4. 编辑VBS脚本
在按钮控件的对象属性-事件-按钮-其它中,右键选择对象更改,添加VBS动作。
图8
代码如下:
Sub OnObjectChanged(ByVal Item)
Dim ua,filename
Set ua = ScreenItems("Table") ''用户归档控件
filename= Year(Now) & "_" & Month(Now) & "_" & Day(Now) & "_" & Hour(Now) ''以年_月_日_小时命名
ua.ExportDirectoryChangeable = 1 ''允许修改导出目录
ua.ExportShowDialog = 1 ''设置显示对话框
ua.ExportFilename = filename ''文件名称
ua.ExportDirectoryname= "C:\Wincc_Projects\Table" ''设置导出目录
ua.Export() ''开始导出
End Sub
5. 编辑全局脚本
打开全局脚本编辑器,添加全局动作“报表导出”。
图9
图10
编辑如下代码:
#include "apdefap.h"int gscAction( void )
{
SetTagBit("TableExport" ,!GetTagBit("TableExport"));
return 0;
}
添加触发器,如图11所示。这里为了方便实验,我们设置为1分钟触发一次,即每1分钟“Table”变量置位或复位一次。可根据实际情况修改,如每天8:00触发一次。
图11
三、实验验证
运行画面文件,注意要勾选如图12所示的几个启动项。
图12
运行效果如下,可以发现,每隔1分钟,就会弹出一个对话框,提示报表即将导出。如果点击画面中的“报表导出”按钮,也可手动导出报表文件。
图13
如果不想弹出该对话框,可在VBS脚本中做如下设置:
ua.ExportDirectoryChangeable = 0 ''不允许修改导出目录
ua.ExportShowDialog = 0 ''设置不显示对话框
导出的CSV文件,用Excel打开即可。
图14
总结
本文提供了一种Wincc报表定时自动导出的方法,并实现了对导出文件的自动命名。该方法的原理是,将具有报表导出功能的VBS脚本,添加到一个按钮的“数值变化”属性中,只要该按钮关联的变量数值发生了改变,即可导出报表,同时在全局脚本中,又添加了定时改变该变量数值的脚本,以此来实现报表的自动导出。