| 作者 | 主题 |
|---|---|
|
SHANGRILA 侠圣 经验值:3357 发帖数:863 精华帖:4 |
楼主
主题: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)
君子以自强不息
|
|
SHANGRILA 侠圣 经验值:3357 发帖数:863 精华帖:4 |
1楼
主题:回复:wincc 使用C脚本生成EXCEL报表
找到问题所在了,应为是使用的PCS7软件后变量名称的问题,所以对于GetTagFloat("GI-100016")这里变量应该是GetTagFloat("GI-10006/7.PV_Out#Value")
君子以自强不息
|