WINCC使用C脚本生成EXCEL报表

使用论坛中提供的代码,在全局脚本中定时执行脚本,但是写入EXCEL的值都是0,不知道为何?
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
int i;
#pragma code ("kernel32.dll")//调用动态链接库
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
#pragma code ()
#pragma code("Shell32.dll")//调用动态链接库
VOID ShellExecuteA(HWND, LPCTSTR , LPCTSTR , LPCTSTR , LPCTSTR , INT);
#pragma code()
char FileName[30] = ""; 
SYSTEMTIME sysTime;
__object* pExcel = NULL; //建立 pExcel 指针 用来对 EXCEL 进行操作
HWND handle=NULL;
handle=FindWindow(NULL,"WinCC-运行系统 - ");
GetLocalTime(&sysTime);
//***********************************
SetTagWord("Minute",sysTime.wMinute);
i=GetTagWord("Minute")+3;
if (i>26) { GetTagWord("Minute") ;}
else if (i<=26) 
{
sprintf(FileName,"d:\\Day_Report_%02d-%02d-%02d.xls",sysTime.wYear,sysTime.wMonth,sysTime.wDay);
pExcel = __object_create("Excel.Application"); 
pExcel->Visible = 0;//控制生成的excel文件是否可见,当1时,生成excel文件时可见.
pExcel->Workbooks ->Open (FileName);
pExcel->Worksheets("sheet1")->Range("X1")->Value=GetTagChar("@ServerName");//Return-Type: char* 读取当前计算机名
pExcel->Worksheets("sheet1")->Range("X2")->Value=GetTagChar("@CurrentUser");//Return-Type: char* 读取当前操作员
pExcel->Worksheets("sheet1")->Cells(6,i)->Value=GetTagChar("GI-10001");
pExcel->Worksheets("sheet1")->Cells(7,i)->Value=GetTagFloat("GI-10002"); 
pExcel->Worksheets("sheet1")->Cells(8,i)->Value=GetTagFloat("GI-10003"); 
pExcel->Worksheets("sheet1")->Cells(9,i)->Value=GetTagFloat("GI-10004"); 
pExcel->Worksheets("sheet1")->Cells(10, i)->Value=GetTagFloat("GI-10005"); 
pExcel->Worksheets("sheet1")->Cells(11, i)->Value=GetTagFloat("GI-100016"); 
pExcel->ActiveWorkbook->Save;//As(FileName);//存盘~
//pExcel->ActiveWorkbook->PrintPreview();//可以预览
//if (i>=27) { pExcel->ActiveWorkbook->PrintOut(); }//直接打印
pExcel->Workbooks->Close();//关闭文件
pExcel->Quit();//退出Excel
__object_delete(pExcel); 
}
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END

// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
}

另外此段脚本的含义是什么?
SetTagWord("Minute",sysTime.wMinute);
i=GetTagWord("Minute")+3;
if (i>26) { GetTagWord("Minute") ;}
else if (i<=26)

最佳答案

http://www.52plc.net/read.php?tid=4596
参考这个,带注释的

SetTagWord("Minute",sysTime.wMinute);//wincc变量Minute写入当前系统时间的分钟值
i=GetTagWord("Minute")+3;//i=当前时间的分钟值+3
if (i>26) { GetTagWord("Minute") ;}//如果当前时间的分钟值+3大于26则读取保存的分钟值
else if (i<=26)//否则如果分钟值+3小于等于26则。。。。。。

提问者对于答案的评价:
谢谢您的解答,也感谢其他朋友的热心帮助。zhangli0能否将代码发到我的邮箱呢,我以前注册过,但是一直登录不上。394514773@qq.com .      这段程序原作者应该是使用的STEP7软件,而我使用的是PCS7所以对于GI-10001这些变量的地址写错了,改为变量归档中的实际地址后没有问题了。

最佳答案作者回复:
你直接到这个网站上去下载就好了,这是我上传的。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc192658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年8月15日 上午12:27
下一篇 2017年8月15日 上午12:27

相关推荐

  • WINCC用布局通过ODBC读取ACCESS做报表问题111

    1、数据已存入ACCESS,如图1.2、布局已连接ACCESS源,SQL,连接变量SQLACCESS。问题:连接成功并且可以读取,但只能读一列。3、全部读取,结果如图2.Dim&n…

    2017年6月6日
  • prodave调试错误

    使用prodave6.2和s7-1500PLC进行通信,按照教程“通过PRODAVE V6.2 与 S7-1500 建立通信”,结果出现错误…

    2017年6月1日
  • 西门子触摸屏编程软件打不开hmi文件

    SIMATIC WinCC flexible 2008打不开hmi文件 图片说明:    最佳答案 可能原因一:“Wincc&nb…

    2021年7月5日
  • wincc中文版换英文版

    现在客户要就我们把wincc6.0软件中文的换成英文的.英文的能直接打开原来中文的吗?如果不能重新设计,原来的图能复制粘贴到英文版吗? 最佳答案 亲!! 是可以的!!&n…

    2017年11月4日
  • 结构变量的地址

    wincc画面上有48个阀门,每个阀门都要有“打开-绿色”,“关闭-红色”,“故障-黑色”三种状态。我建立了一个结构变量“valve”,想用画面模版的方法显示。变量包含两个位变量:…

    SIMATIC WinCC 2019年6月11日
  • CPU226想对一个输出点位上升沿置1,不能实现

    CPU226 CN,我要对一个输出点位q1.4,通过m3,4上升沿j将其置1,编译后,交叉引用中观察没有对q1.4复位的程序段,但是在触摸屏上点击m3.4,监控plc其中…

    SIMATIC WinCC 2021年7月5日
  • wincc运行过程中的问题

    当画面运行时,带动画的图形运行时才为绿色.可是在没运行时,有时会出现绿色的虚假现象,但实际设备并未运行.当切换几次画面后,便恢复正常.我的动画是在C脚本里做的!!不知是什么原因? …

    SIMATIC WinCC 2019年6月11日
  • WINCC V7.4系统时间怎么根据网络时间同步

    我目前在做一个wincc的项目,现在wincc的时间基准使用的是本地计算机的时间,如果手动修改计算机的时间,wincc的时间也会跟着改变,现在客户有一个要求是项目要跟网络上的一个时…

    SIMATIC WinCC 2020年11月1日
  • wincc和200通讯方式

    除了ACCESS和net外,还有其他方式吗,以前protool和200通讯方式蛮多的,为什么wincc不把它与200通讯方式集成上去呢? 最佳答案 wincc和200通讯方式:1、…

    SIMATIC WinCC 2019年6月11日
  • 求WinCC学习指南

    如题,各位大侠请多多指点,小弟不胜感激。 最佳答案 上面介绍的资料都可以看看,《深入浅出西门子WINNCC 6.0》这本书最基础,在找本WINCC C脚本手册和…

    SIMATIC WinCC 2019年6月11日