大家好,我使用本站提供的C代码做日报表,但是数据没有在整点写入EXCEL中,只有在0点时第一次的输入写入了,其他整点都没有写入。
还有一个问题就是:PCS7中自动生成的报警内容,如何能改为自己需要的报警内容?
代码如下:
#include "apdefap.h"
int gscAction( void )
{
//每天0点生成一个空报表
#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] = ""; char DateTime[30] = "";
SYSTEMTIME sysTime;
__object* pExcel = NULL; //建立 pExcel 指针 用来对 EXCEL 进行操作
HWND handle=NULL;
handle=FindWindow(NULL,"WinCC-运行系统 - ");
GetLocalTime(&sysTime);
sprintf(FileName,"d:\\Day_Report_%02d-%02d-%02d_all.xls",sysTime.wYear,sysTime.wMonth,sysTime.wDay,sysTime.wHour);//每天生成报表用
pExcel = __object_create("Excel.Application");
pExcel->Visible = 0;//控制生成的excel文件是否可见,当1时,生成excel文件时可见.
pExcel->Workbooks ->Open ("d:\\Day_Report.XLS");
pExcel->ActiveWorkbook->SaveAs(FileName);//存盘
//pExcel->ActiveWorkbook->PrintPreview();//可以预览
//pExcel->ActiveWorkbook->PrintOut();//直接打印
pExcel->Workbooks->Close();//关闭文件
pExcel->Quit();//退出Excel
__object_delete(pExcel);
return 0;
}
此段代码应该没有问题,生成了空表格
#include "apdefap.h"
int gscAction( void )
{
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("Hour",sysTime.wHour);
i=GetTagWord("Hour")+5;
if (i>23) { GetTagWord("Hour") ;}
else if (i<=23)
{
sprintf(FileName,"d:\\Day_Report_%02d-%02d-%02d_all.xls",sysTime.wYear,sysTime.wMonth,sysTime.wDay,sysTime.wHour);
pExcel = __object_create("Excel.Application");
pExcel->Visible = 0;//控制生成的excel文件是否可见,当1时,生成excel文件时可见.
pExcel->Workbooks ->Open (FileName);
pExcel->Worksheets("sheet1")->Range("G1")->Value=GetTagChar("@ServerName");//Return-Type: char* 读取当前计算机名
pExcel->Worksheets("sheet1")->Range("G2")->Value=GetTagChar("@CurrentUser");//Return-Type: char* 读取当前操作员
pExcel->Worksheets("sheet1")->Cells(i,2)->Value=GetTagFloat("GI-10001/7.PV_Out#Value");
pExcel->Worksheets("sheet1")->Cells(i,3)->Value=GetTagFloat("GI-10002/7.PV_Out#Value");
pExcel->Worksheets("sheet1")->Cells(i,4)->Value=GetTagFloat("GI-10003/7.PV_Out#Value");
pExcel->Worksheets("sheet1")->Cells(i,5)->Value=GetTagFloat("GI-10004/7.PV_Out#Value");
pExcel->Worksheets("sheet1")->Cells(i,6)->Value=GetTagFloat("GI-10005/7.PV_Out#Value");
pExcel->Worksheets("sheet1")->Cells(i,7)->Value=GetTagFloat("GI-10006/7.PV_Out#Value");
pExcel->ActiveWorkbook->Save;//As(FileName);//存盘~
//pExcel->ActiveWorkbook->PrintPreview();//可以预览
//if (i>=27) { pExcel->ActiveWorkbook->PrintOut(); }//直接打印
pExcel->Workbooks->Close();//关闭文件
pExcel->Quit();//退出Excel
__object_delete(pExcel);
}
return 0;
}
此段代码就是写入数据的,但没有在整点写入(除了0点,第一次写入了数据)
触发器定义如图