怎样用C脚本在wincc中判断指定的excel报表是否存在

新手刚学wincc,现在遇到一个问题,向各位请教. 
 怎样在wincc中用C脚本判断excel报表是否存在,vbs只懂皮毛,最好不要说用vbs做. 
 #pragma code ("kernel32.dll") 
 VOID GetLocalTime(LPSYSTEMTIME lpSystemTime); 
 #pragma code () 
 char FileName[20] = "",Date[2] = ""; 
 static int i,j; 
 SYSTEMTIME sysTime; 
 __object* pExcel = NULL; 
 GetLocalTime(&sysTime); 
 sprintf(FileName,"e:\\%d年%d月.xls",sysTime.wYear,sysTime.wMonth); 
 sprintf(Date,"%d",sysTime.wDay); 
 i=atoi(Date)+2; 
 j++; 
 if(j==3) j=0; 
 pExcel = __object_create("Excel.Application"); 
 pExcel->Visible = 0; 
 if(在这里判断) 
 { 
 pExcel->Workbooks ->Open ("e:\\book1.xls"); 
 pExcel->ActiveWorkbook->SaveAs(FileName); 
 } 
 pExcel->Workbooks ->Open (FileName); 
 pExcel->WorkSheets("sheet1")->Cells(i,j+2)->Value=GetTagFloat("供水"); 
 pExcel->WorkSheets("sheet1")->Cells(i,j+6)->Value=GetTagFloat("补水"); 
 pExcel->ActiveWorkbook->Save(); 
 pExcel->Workbooks->Close(); 
 pExcel->Quit(); 
 __object_delete(pExcel);

最佳答案

呵呵,这个问题居然在亿万上也看到了。
 fso有FileExists方法来判断文件是否存在
 __object* fso=NULL;
 fso=__object_create("Scripting.FileSystemObject");
 if (fso->FileExists("E:\\myfile.xls"))
 {
  printf("OK");
 }
 __object_delete(fso);

提问者对于答案的评价:
亿万上也是我问的,现已解决,不过还是谢谢啊.
 #pragma code ("kernel32.dll")
 VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
 #pragma code ()
 char FileName[20] = "",Date[2] = "";
 static int i,j;
 SYSTEMTIME sysTime;
 __object* pExcel = NULL; 
 __object* fso=NULL;
 GetLocalTime(&sysTime);
 sprintf(FileName,"e:\\%d年%d月.xls",sysTime.wYear,sysTime.wMonth);//以当前年月作为文件名
 sprintf(Date,"%d",sysTime.wDay);//日期赋值给字符串Date
 i=atoi(Date)+2;//日期转化为整形,加2的原因是表格上面要留2行写其他东西
 j++;
 if(j==3) j=0;//换列用,每次前进一列,输入三次后返回
 pExcel = __object_create("Excel.Application");
 fso=__object_create("Scripting.FileSystemObject");
 pExcel->Visible = 0;
 if(!(fso->FileExists(FileName)))//判断文件夹内是否存在当前年月为名称的excle文件
 {
 pExcel->Workbooks ->Open ("e:\\book1.xls");
 pExcel->ActiveWorkbook->SaveAs(FileName);//不存在则复制,做好的模板book1.xls,另存名称为当前年月
 }
 __object_delete(fso);
 pExcel->Workbooks ->Open (FileName);
 pExcel->WorkSheets("sheet1")->Cells(i,j+2)->Value=GetTagFloat("供水");//把变量写入第i行,j+2列
 pExcel->WorkSheets("sheet1")->Cells(i,j+6)->Value=GetTagFloat("补水");//把变量写入第i行,j+6列
 pExcel->ActiveWorkbook->Save();//保存
 pExcel->Workbooks->Close();
 pExcel->Quit();
 __object_delete(pExcel);

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日 上午11:28
下一篇 2019年6月11日 上午11:29

相关推荐

  • 怎么用C改变顔色

    阀的开/关位,用一个圆来显示绿/红色,可否在脚本里写?是,怎么写?小的跟您学一招了 最佳答案 (—)   J;°M„N1&nbsp…

    SIMATIC WinCC 2019年6月11日
  • WINCC在线表格中的动态参数

    在报表编辑器中,插入一个WINCC在线表格控件以后,在其属性里有个分配参数和动态参数,想问一下动态参数里面那些参数代表什么意思?在WINCC得手册中没有查询到。比如:TimeZon…

    SIMATIC WinCC 2019年6月11日
  • 记录I/O状态,是用变量记录还是报警记录?

    我要记录一个变量的状态,为1的时候记录一次,为0的时候记录一次,不需要确认,只在列表中显示即可,像报警控件那样。请问是用报警记录还是变量记录?我用报警记录做的,I/O状态改变后必须…

    SIMATIC WinCC 2019年6月11日
  • WINCC RC许可证授权安装问题

    我在新装一台电脑,STEP7和WINCC都正常安装完毕,都可以连上,安装完授权但WINCC一直显示演示模式已激活,相关提示为以下许可证查询将触发演示模式:SIMATIC …

    SIMATIC WinCC 2021年7月5日
  • 请问大家遇到过WINCC生产报表增加不了记录的问题吗?

    请问大家遇到过WINCC生产报表增加不了记录的问题吗?报表用VB做的,现在只有服务器能增加,在操作员站执行的配方,不能自动增加生产记录,变量检查过都是对的,还有WINCC能不能做可…

    SIMATIC WinCC 2020年11月1日
  • WINcc模拟量求和

    各位工程师好,小弟现在要在WINcc上面对几个浮点型数据求和,请问该怎么实现?先谢谢了。 最佳答案 io域,动态连接输入公式:”变量1”+‘变量2’+‘变量3’…….v…

    SIMATIC WinCC 2017年12月8日
  • 安全文件不能载入

    为什么在打开WINCC项目时,会出现 The TTEditExp.dll file could not  be…

    SIMATIC WinCC 2019年6月11日
  • 流量显示置零

    我在WINCC画面里坐了个流量累积的现实,流量累积的程序是在step7里做的,我现在想把wincc里显示的流量累积在某个时间置零,请问该如何做?谢谢! 最佳答案 这个也在step7…

    SIMATIC WinCC 2019年6月11日
  • wincc怎么进行“用户归档”

    wincc怎么进行“用户归档” 新手,多多关照 问题补充:您好、我的wincc是6.0版本, 没有用“户归档编辑器”是怎么回事? 该怎么加载?&nbs…

    SIMATIC WinCC 2019年6月11日
  • c脚本的变量如何对应到WINCC里的内部变量?

    刚接触wincc里C脚本,想做个简单的试验:在wincc里新建三个内部变量,a,b,c,a+b的值赋予c,画面编辑器里建三个输入输出域,分别对应这三个变量.在c脚本编辑器里新建一个…

    SIMATIC WinCC 2019年6月11日