技术论坛

 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、得到到结果


希望对大家有帮助或启发

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

经验值:28634
发帖数:10885
精华帖: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
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。