wincc导出excel

wincc 5.0中,如何实现把实时变量导出到指定excel中.比如,现有压力和流量两个变量,需要把每小时的数值自动导出到excel中.

我是这样写的,能保存,你看看合适不
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
// 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
#pragma code ("kernel32.dll")
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
#pragma code ()
//原有控制变量
float mycoolingtem,mycoolingtime;
extern float coolingtime[17],coolingtem[17],coolingtemmid[1800];
extern BOOL shuifa_kaiguan[16],famen_xuanze[4];
short int i,p,temperature_number;
float maxtime,j;
//字符串循环变量
char FileName[20] = "";
SYSTEMTIME sysTime;
int k;
char FieldString[20];
//Excel指针
__object* pExcel = NULL;
GetLocalTime(&sysTime);
sprintf(FileName,"d:\\%d-%d-%d-%d-%d-%d.xls",sysTime.wYear,sysTime.wMonth,sysTime.wDay,sysTime.wHour,sysTime.wMinute,sysTime.wSecond);
pExcel = __object_create("Excel.Application.11");
pExcel->Visible = 1;
pExcel->Workbooks ->Open ("d:\\book1.xls");
for(k=1;k<=150;k++)
{
sprintf(FieldString, "%s%d", "A",k);
printf("%s\n",FieldString);
pExcel->Worksheets("sheet1")->Range(FieldString)->Value=12;
}
pExcel->ActiveWorkbook->SaveAs(FileName);
pExcel->Workbooks->Close();
pExcel->Quit();
__object_delete(pExcel);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-15
wincc5.0版本够老的了,可以使用opc通讯,也就是在excel中调用vba的脚本就可以了,具体的请参照西门子自动化与驱动集团的官方网站,上面有很详细的解释的本回答被网友采纳
第2个回答  2010-01-16
OPC是一个解决方案,我有下载的西门子示例,可以通过Excel定时读取,但不很方便,因为让excel一直运行不是很好;
另一个就是写Vb脚本,将数据定时写入SQL数据库,然后通过控件调用Excel获取数据显示在Wincc上。
第3个回答  2010-01-15
Wincc5.x你可以通过DDE通讯与Execl进行通讯。

如果使用OPC,那么你需要使用Wincc5作为OPC服务器,Execl中使用VBA脚本来写OPC客户端,相信你的编程能力还不能自己写客户端程序,还是用DDE吧。
相似回答