技术论坛

 wincc导出excel报表分享

返回主题列表
作者 主题
zjr11
游侠

经验值: 447
发帖数: 6
精华帖: 1
楼主    2021-03-01 14:50:43
主题:wincc导出excel报表分享 精华帖 

最近做了一个可以在wincc界面上选择日期来导出对应的归档数据到excel表上的小功能,分享给大家。

1、第一个就是下图的这个小控件(“DTPicker”)调用,需要自行安装VB的脚本软件,安装完成后才能调用出来。

2、

导出excel表格,需要在工程下放excel模板,导入excel按钮中有句程序

objExcelApp.Workbooks.Open ipT+"\dayreport.xlsx"           '//打开目录下的文件,

3、对应的程序如下









4、上面到GetLocalDate这个函数不是自带到,要自己写,然后放到对应工程路径下,具体看下面链接

http://www.ad.siemens.com.cn/service/answer/solved_248281_1032.html

5、得到到结果


希望对大家有帮助或启发

腹有诗书气自华,读书万卷始神通
万泉河
至圣

经验值: 28645
发帖数: 10887
精华帖: 131
1楼    2021-03-01 16:00:06
主题:回复:wincc导出excel报表分享

不错! 

虽然已经多次有人做过了,但仍然有学习价值. 


话说, 这个GetLocalDate最早谁起的名字啊?

弄得我一愣, 不知道啥意思. 

不就是UTC_TO_LOCAL吗?

而反过来是LOCAL_TO_UTC

微信公众号:PLC标准化编程,ZHO6371995
手机用户20200103FZF48F
奇侠

经验值: 5679
发帖数: 767
精华帖: 1
2楼    2021-03-01 16:05:39
主题:回复:wincc导出excel报表分享


不错,值得学习。

WOWUWUWU
至圣

经验值: 10367
发帖数: 1793
精华帖: 0
3楼    2021-03-01 16:09:10
主题:回复:wincc导出excel报表分享


不错,谢谢分享。

zjr11
游侠

经验值: 447
发帖数: 6
精华帖: 1
4楼    2021-03-01 16:40:26
主题:回复:wincc导出excel报表分享

西门子官方的资料,可一起参考

1、WinCC、Excel、VBA、脚本、连通性软件包

https://support.industry.siemens.com/cs/document/71676391/wincc%E3%80%81excel%E3%80%81vba%E3%80%81%E8%84%9A%E6%9C%AC%E3%80%81%E8%BF%9E%E9%80%9A%E6%80%A7%E8%BD%AF%E4%BB%B6%E5%8C%85?dti=0&lc=zh-CN

 

2、下面这个文档是连接数据库的说明文档

 关于Flags和Quality,请参考下面说明:

https://support.industry.siemens.com/cs/mdm/109746336?c=39106392587&dl=zh&lc=en-CN

 

具体的文档看参考我下载的pdf。

3、导出数据是时间的问题,需要安装下面这个小插件

最后,建议更新下update16:

https://support.industry.siemens.com/cs/de/en/view/109782634

 

4、西门子自带的excel报表导出数据模板

Exporting Archive Data with the Aid of the SIMATIC WinCC/Connectivity Pack (OLE-DB Provider, Excel clients:)

https://support.industry.siemens.com/cs/cn/en/view/38132261


腹有诗书气自华,读书万卷始神通
万泉河
至圣

经验值: 28645
发帖数: 10887
精华帖: 131
5楼    2021-03-01 19:25:30
精华帖  主题:回复:wincc导出excel报表分享

Function GetLocalDate(vtDate)
Dim DoY
Dim dso
Dim dwi
Dim strComputer, objWMIService, colItems, objItem
Dim TimeZone
Dim vtDateLocalDate
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & "
ootcimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TimeZone")
For Each objItem In colItems
TimeZone = objItem.Bias / 60 'offset TimeZone In hours
Next
If IsDate(vtDate) <> True Then
IS_GetLocalDate = False
Exit Function
End If
DoY = DatePart("y", vtDate)
dso = DatePart("y", "31.03") - DatePart("w", "31.03") + 1
dwi = DatePart("y", "31.10") - DatePart("w", "31.10") + 1
If DoY >= dso And DoY < dwi Then
'sommer
TimeZone = TimeZone + 1 'additional offset 1h in summer
End If
vtDateLocalDate = DateAdd("h", 1 * TimeZone, vtDate)
GetLocalDate = vtDateLocalDate
End Function
更多关于时间转换的信息请参考连接:
如何将本地计算机时间的时间戳(日期时间)转换成协调世界时 (UTC)?  24201113



这个函数是有问题的, 他花费了很大的篇幅,在计算夏时制,然后会导致中国在夏季的时候时间错了1个小时. . 

微信公众号:PLC标准化编程,ZHO6371995
yangchunbaixue
侠圣

经验值: 3699
发帖数: 555
精华帖: 0
6楼    2021-03-02 08:03:05
主题:回复:wincc导出excel报表分享
感谢楼主分享,很不错。
yecao2006
至圣

经验值: 18019
发帖数: 1524
精华帖: 2
7楼    2021-03-02 08:26:55
主题:回复:wincc导出excel报表分享

非常好的分享,谢谢楼主。

我回来了!继续努力!
黑猫警长W
至圣

经验值: 18375
发帖数: 2408
精华帖: 1
8楼    2021-03-02 09:54:56
主题:回复:wincc导出excel报表分享

厉害,学习一下

天芯
至圣

经验值: 18789
发帖数: 2104
精华帖: 0
9楼    2021-03-02 12:23:28
主题:回复:wincc导出excel报表分享

这个厉害了

您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。