亦有资源网

C++语言基础到进阶学习资源汇总

老董精心编写-WINCC组态软件生成EXCEL报表详细脚本

老董花了一上午的时间给大家准备了一篇,WINCC操作EXCEL的详细教程,并把程序里面每一行进行注释。

1、打开WINCC创建两个系统变量


2、创建全局动作

3、建立报表模板,建立报表存储目录

脚本中下划线内目录为报表存储目录:

sprintf(FileName,"d:\\报表\\%d年%d月%d日.xls",sysTime.wYear,sysTime.wMonth,sysTime.wDay);

//定义excel表格的文件名(当前年月)及存储位置

必须保证D盘中有报表文件夹,或者改脚本中目录名称。


脚本中下划线内目录为报表模板目录:

pExcel->Workbooks ->Open ("d:\\报表样本.xls");

//读取样表

必须保证模板存在此目录,模板是自己创建的,样式参考如下:


四、每行注释的脚本内容


#include "apdefap.h"
//包含头文件,也就是引用了APDEFAP.H里面包含的函数,这些函数基本上都是WINCC特有的。
int gscAction( void )
//定义一个无参数有返回值的函数。
{
//函数包含内容使用大括号
#pragma option(mbcs) 
 //WINCC自行添加,意义不明确,老董猜测应该是赋予程序某个参数!
#pragma code ("kernel32.dll")
 //引用库文件Kernel32,kernel32.dll属于Windows中非常重要的32位动态链接库文件。
static  int i=GetTagWord("h")+7;
//声明一个静态变量,为什么是静态?因为每一次执行的时候能够记忆上一次的值。这个I是行号,要根据你制作的EXCEL表格模板来确定起始行。
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
//获取当前系统日期时间变量
#pragma code ()

char FileName[20] = "",Date[2] = "";
//定义文件名,日期的字符串变量。
SYSTEMTIME sysTime;
//系统日期时间对象对象创建
__object* pExcel = NULL; 
//创建一个pExcel对象
__object* fso=NULL;
//创建一个可以操作系统文件的对象,FSO全名是File System Object
GetLocalTime(&sysTime);
//读系统时间
sprintf(FileName,"d:\\报表\\%d年%d月%d日.xls",sysTime.wYear,sysTime.wMonth,sysTime.wDay);
//定义excel表格的文件名(当前年月)及存储位置,sprintf函数是格式化文本用的。
pExcel = __object_create("Excel.Application");
//将操作EXCEL的能力赋给pExcel对象。
fso=__object_create("Scripting.FileSystemObject");
//将系统操作文件的能力付给fso对象。
pExcel->Visible = 0;
//不在前台显示excle程序
if(!(fso->FileExists(FileName)))
  //判断以下是否有这个文件
{
pExcel->Workbooks ->Open ("d:\\报表样本.xls");//读取样表
  //没有就打开模板EXCEL。
pExcel->ActiveWorkbook->SaveAs(FileName);
  //将打开的模板另存为一个新的报表,已日期命名。
i=7;
  //将初始行定义为第7行,这个只在每一天的第一次运行执行,因为如果文件已经存在就不会再操作了。
}
__object_delete(fso);
//fso使用完了就可以销毁了,没有用的东西就不让它占用资源了。
pExcel->Workbooks ->Open (FileName);
pExcel->WorkSheets("Sheet1")->Cells(2,2)->Value=GetTagChar("date");//在第1行第2列写入tag1变量的值
pExcel->WorkSheets("Sheet1")->Cells(i,1)->Value=GetTagChar("time");//在第i行第1列写入tag1变量的值
pExcel->WorkSheets("Sheet1")->Cells(i,2)->Value=GetTagFloat("1#pump_current");
pExcel->WorkSheets("Sheet1")->Cells(i,3)->Value=GetTagFloat("2#pump_current");
pExcel->WorkSheets("Sheet1")->Cells(i,4)->Value=GetTagFloat("3#pump_current");
pExcel->WorkSheets("Sheet1")->Cells(i,5)->Value=GetTagFloat("1#pump_pressure");
pExcel->WorkSheets("Sheet1")->Cells(i,6)->Value=GetTagFloat("2#pump_pressure");
pExcel->WorkSheets("Sheet1")->Cells(i,7)->Value=GetTagFloat("3#pump_pressure");
pExcel->WorkSheets("Sheet1")->Cells(i,8)->Value=GetTagFloat("inlet_water_flow");
pExcel->WorkSheets("Sheet1")->Cells(i,9)->Value=GetTagFloat("outlet_water_flow");
pExcel->WorkSheets("Sheet1")->Cells(i,10)->Value=GetTagFloat("water_to_cleantank_flow");
pExcel->WorkSheets("Sheet1")->Cells(i,11)->Value=GetTagFloat("drain_water_flow");
pExcel->WorkSheets("Sheet1")->Cells(i,12)->Value=GetTagFloat("turbidity_1");
pExcel->WorkSheets("Sheet1")->Cells(i,13)->Value=GetTagFloat("turbidity_2");
pExcel->WorkSheets("Sheet1")->Cells(i,14)->Value=GetTagFloat("PH");
pExcel->WorkSheets("Sheet1")->Cells(i,15)->Value=GetTagFloat("inlet_water_level");
pExcel->WorkSheets("Sheet1")->Cells(i,16)->Value=GetTagFloat("subside_tank_1_level");
pExcel->WorkSheets("Sheet1")->Cells(i,17)->Value=GetTagFloat("subside_tank_2_level");
pExcel->WorkSheets("Sheet1")->Cells(i,18)->Value=GetTagFloat("subside_tank_3_level");
pExcel->WorkSheets("Sheet1")->Cells(i,19)->Value=GetTagFloat("subside_tank_4_level");
pExcel->WorkSheets("Sheet1")->Cells(i,20)->Value=GetTagFloat("cleantank_level");
pExcel->WorkSheets("Sheet1")->Cells(i,21)->Value=GetTagFloat("PAC_flow");
pExcel->WorkSheets("Sheet1")->Cells(i,22)->Value=GetTagFloat("PAC_tank_1_level");
pExcel->WorkSheets("Sheet1")->Cells(i,23)->Value=GetTagFloat("PAC_tank_2_level");
pExcel->WorkSheets("Sheet1")->Cells(i,24)->Value=GetTagFloat("NACIO_1_flow");
pExcel->WorkSheets("Sheet1")->Cells(i,25)->Value=GetTagFloat("NACIO_2_flow");
pExcel->WorkSheets("Sheet1")->Cells(i,26)->Value=GetTagFloat("1#pump_current_CPU2");
pExcel->WorkSheets("Sheet1")->Cells(i,27)->Value=GetTagFloat("1#pump_frequency_CPU2");
pExcel->WorkSheets("Sheet1")->Cells(i,28)->Value=GetTagFloat("2#pump_current_CPU2");
pExcel->WorkSheets("Sheet1")->Cells(i,29)->Value=GetTagFloat("3#pump_current_CPU2");
pExcel->WorkSheets("Sheet1")->Cells(i,30)->Value=GetTagFloat("1#pump_pressure_CPU2");
pExcel->WorkSheets("Sheet1")->Cells(i,31)->Value=GetTagFloat("2#pump_pressure_CPU2");
pExcel->WorkSheets("Sheet1")->Cells(i,32)->Value=GetTagFloat("3#pump_pressure_CPU2");
pExcel->WorkSheets("Sheet1")->Cells(i,33)->Value=GetTagFloat("outlet_water_flow_CPU2");
pExcel->WorkSheets("Sheet1")->Cells(i,34)->Value=GetTagFloat("outlet_water_pressure_CPU2");
pExcel->WorkSheets("Sheet1")->Cells(i,35)->Value=GetTagFloat("turbidity");
pExcel->WorkSheets("Sheet1")->Cells(i,36)->Value=GetTagFloat("PH_CPU2");
pExcel->WorkSheets("Sheet1")->Cells(i,37)->Value=GetTagFloat("CL");

pExcel->ActiveWorkbook->Save();
//保存报表
pExcel->Workbooks->Close();
//关闭工作簿
pExcel->Quit();
//退出EXCEL
__object_delete(pExcel); 
//删除PEXCEL对象
i=i+1; 
//下一次运行脚本,写入下一行
return 0; 
} 


控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言