网站首页 > 技术教程 正文
老董花了一上午的时间给大家准备了一篇,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;
}
猜你喜欢
- 2024-10-18 SOLIDWORKS PDM客户端安装问题总结
- 2024-10-18 2021届中考总复习,圆的知识重难点综合和中考考点归纳总结
- 2024-10-18 SQL Server错误18456:解决方案(sql2008r2错误18456)
- 2024-10-18 一步一步教你,在iFix中如何将数据记录通过ODBC保存到SQL SERVER
- 2024-10-18 SQL学习篇 | 对比Excel Power Query学习SQL
- 2024-10-18 条码软件如何通过ODBC数据源访问SQLServer(二)
- 2024-10-18 Access配置odbc数据源连接ORACLE数据库
- 2024-10-18 GBASE南大通用GBase 8a ODBC的安装文件
- 2024-10-18 oracle怎么通过odbc进行异构库跨连SQL server
- 2024-10-18 Qt毫秒级读取Excel文件(qt 获取毫秒)
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)