wincc生成excel
wincc的excel报表实例
wincc的excel报表打印实例因为ms word和excel的文档都支持html文本格式,因此可以先用word或excel做好模版,另存为Web页,然后将该html 改成jsp,将数据部分动态填入即可,不用很辛苦的调整格式word页面只要在jsp头设置如下指令:<%@page contentType="application/msword;charset=GBK" %>excel如下:<%@page contentType="application/vnd.ms-excel;charset=GBK" %>使用这种方式客户端必须安装有office软件,用户访问时将在ie中直接用wor d或excel打开该页面。
此方法优势是模板设计、调整方便,无需在服务器端使用复杂的POI或jxl技术,也无需在客户端使用ActiveX控件技术,更安全、方便,轻松实现较好的打印效果。
简单示例:使用word建立一文档,画表格如下:----------------------------| 用户名| 真实姓名| 性别|----------------------------| guest | 路人甲| 男|----------------------------保存为Web页test.htm,将test.htm改名为test.jsp,修改其中guest、路人甲、男为从数据库动态查询,如下:<%@ page contentType="application/msword;charset=GBK" %><%@ page import="java.sql.*" %><html xmlns:o="urn:schemas-micr osoft-com:office:office"xmlns:w="urn:schemas-microsoft-com:office:word"xmlns="http://www.w3.or g/TR/REC-html40"><head><meta http-equiv=C ontent-Type content="text/html; charset=GB2312"><meta name=ProgId content=W ord.Document><meta name=Generator content="Microsoft Word 9"><meta name=Originator content="Microsoft Wor d 9"><title>用户信息</title><!--[if gte mso 9]><xml><o:DocumentProperties><o:Author>evan zhao</o:Author><o:LastAuthor>evan zhao</o:LastAuthor><o:Revision>1</o:Revision><o:TotalTime>1</o:TotalTime><o:Created>2003-08-20T16:26:00Z</o:Created><o:LastSaved>2003-08-20T16:27:00Z</o:LastSaved><o:Pages>1</o:Pages><o:Company>taiping</o:Company><o:Lines>1</o:Lines><o:Paragraphs>1</o:Par agraphs><o:Version>9.2812</o:Version></o:DocumentProperties></xml><![endif]--><!--[if gte mso 9]><xml><w:WordDocument><w:PunctuationKerning><w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGr idV erticalSpacing><w:DisplayH orizontalDrawingGridEvery>0</w:D isplayH orizontalDrawingGr idEvery> <w:DisplayV erticalDrawingGr idEvery>2</w:D isplayVerticalDrawingGr idEvery><w:Compatibility><w:SpaceForUL><w:BalanceSingleByteDoubleByteW idth><w:DoNotLeaveBackslashAlone><w:ULTrailSpace><w:DoNotExpandShiftReturn><w:AdjustLineH eightInTable><w:UseFELayout></w:Compatibility></w:WordDocument></xml><![endif]--><style><!--/* Font Definitions */@font-face{font-family:宋体;panose-1:2 1 6 0 3 1 1 1 1 1;mso-font-alt:SimSun;mso-font-charset:134;mso-generic-font-family:auto;mso-font-pitch:var iable;mso-font-signatur e:3 135135232 16 0 262145 0;}@font-face{font-family:"\@宋体";panose-1:2 1 6 0 3 1 1 1 1 1;mso-font-charset:134;mso-generic-font-family:auto;mso-font-pitch:var iable;mso-font-signatur e:3 135135232 16 0 262145 0;}/* Style Definitions */p.MsoNormal, li.MsoNormal, div.MsoNormal{mso-style-parent:"";margin:0cm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph;mso-pagination:none;font-size:10.5pt;mso-bidi-font-size:12.0pt;font-family:"Times New Roman";mso-fareast-font-family:宋体;mso-font-kerning:1.0pt;}/* Page D efinitions */@page{mso-page-border-surround-header:no;mso-page-border-surround-footer:no;}@page Section1{size:595.3pt 841.9pt;margin:72.0pt 90.0pt 72.0pt 90.0pt;mso-header-margin:42.55pt;mso-footer-margin:49.6pt;mso-paper-source:0;layout-gr id:15.6pt;}div.Section1{page:Section1;}--></style></head><body lang=ZH-CN style='tab-interval:21.0pt;text-justify-trim:punctuation'><div class=Section1 style='layout-gr id:15.6pt'><table border=1 cellspacing=0 cellpadding=0 style='border-collapse:collapse;border:none;mso-border-alt:solid w indowtext .5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'><tr><td w idth=189 valign=top style='width:142.0pt;border:solid w indowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"'>用户名</span></p></td><td w idth=189 valign=top style='width:142.05pt;border:solid windowtext .5pt;border-left:none;mso-border-left-alt:solid w indowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"'>真实姓名</span></p></td><td w idth=189 valign=top style='width:142.05pt;border:solid windowtext .5pt;border-left:none;mso-border-left-alt:solid w indowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"'>性别</span></p></td></tr><%Class.forName("sun.jdbc.odbc.JdbcOdbcDr iver");String url="jdbc:odbc:mydb";//连接mydb数据库Connection con=Driver Manager.getC onnection (url, "", "");try{Statement stmt=con.createStatement();//查询employee表ResultSet rs=stmt.executeQuery("select user_name, real_name, gender from employee ");while(rs.next()){%><tr><td w idth=189 valign=top style='width:142.0pt;border:solid w indowtext .5pt;border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span lang=EN-US><%=rs.getString("user_name")%></span></p></td><td w idth=189 valign=top style='width:142.05pt;border-top:none;border-left:none;border-bottom:solid w indowtext .5pt;border-right:solid w indowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-bor der-left-alt:solid w indowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"'><%=rs.getStr ing("real_name")%></span></p></td><td w idth=189 valign=top style='width:142.05pt;border-top:none;border-left:none;border-bottom:solid w indowtext .5pt;border-right:solid w indowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-bor der-left-alt:solid w indowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'><%=rs.getStr ing("gender")%></span></p></td></tr><%} // end whilers.close();stmt.close();} finally {con.close();}%></table><p class=MsoNormal><span lang=EN-US><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>。
在Excel中访问WinCC变量归档数据
如何在Excel中访问WinCC变量归档数据————————————————————————————————作者:————————————————————————————————日期:1 功能说明在Microsoft office Excel中访问WinCC的历史数据,实现如下图所示的报表:图1: Excel中访问WinCC的历史数据生成报表选择日期后,可以生成当天的风机参数日报表(报表数据来自WinCC)。
2 软件环境本地计算机:Windows XP SP3英文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 2003 远程计算机:Windows XP SP3英文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 20033 WinCC/Connectivity Pack 介绍WinCC变量归档数据是以压缩的形式存储在数据库中,需要通过WinCC/Connectivity Pack提供的OLE-DB接口才能够解压并读取这些数据。
3.1 连接字符串“Provider=WinCCOLEDBProvider.1; Catalog= ***; Data Source= ***;“其中:Catalog:WinCC运行数据库的名称注意:当修改项目名称或在其它计算机上打开原项目时, Catalog会发生变化。
建议使用WinCC系统变量“@DatasourceNameRT” 获得当前的Catalog。
Data Source :服务器名称本地:“.\WinCC” 或者“<计算机名称>\WinCC”远程:“<计算机名称>\WinCC”3.2 查询语句“TAG:R,<ValueID or ValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep>]”其中:ValueName:格式为“ArchiveName\V alue_Name”,可以使用多个名称。
WinCC_To_Excel
可以用C脚本,我已经照此例子实验,可以自动生成EXCEL文件给你转个论坛的帖子做参考取之于“民”用之于“民”,几段代码,希望对后来者有帮助,不要见笑。
1、记录脚本:同一卡片号的每一根钢的数据记录,有多少根,记多少行#include "apdefap.h"int gscAction( void ){#pragma code ()char FileName[20] = " ";double genshu,row,col;__object* pExcel = NULL;genshu=GetTagDouble("记数根数");SetTagDouble("根数记录",genshu);row=genshu+4;if((GetTagBit("钢温记录信号")==1)){pExcel = __object_create("Excel.Application.9"); //9表示用的是office 2000pExcel->Visible =0;pExcel->Workbooks ->Open ("e:\\LZEQ_HMI\\JILU.xls");//Cells(row,col)pExcel->Worksheets("sheet1")->Cells(row,1)->V alue=GetTagWord("记数根数");pExcel->Worksheets("sheet1")->Cells(row,2)->V alue=GetTagChar("开始时间");pExcel->Worksheets("sheet1")->Cells(row,3)->V alue=GetTagWord("1#高温计温度记录"); pExcel->Worksheets("sheet1")->Cells(row,4)->V alue=GetTagFloat("1#水箱流量记录"); pExcel->Worksheets("sheet1")->Cells(row,5)->V alue=GetTagWord("2#高温计温度记录"); pExcel->Worksheets("sheet1")->Cells(row,6)->V alue=GetTagFloat("2#水箱流量记录"); pExcel->Worksheets("sheet1")->Cells(row,7)->V alue=GetTagWord("3#高温计温度记录"); pExcel->Worksheets("sheet1")->Cells(row,8)->V alue=GetTagFloat("3#水箱流量记录"); pExcel->Worksheets("sheet1")->Cells(row,9)->V alue=GetTagWord("4#高温计温度记录"); pExcel->Worksheets("sheet1")->Cells(row,10)->V alue=GetTagWord("5#高温计温度记录"); pExcel->Worksheets("sheet1")->Cells(row,11)->V alue=GetTagFloat("4#水箱流量记录"); pExcel->Worksheets("sheet1")->Cells(row,12)->V alue=GetTagWord("6#高温计温度记录"); pExcel->Worksheets("sheet1")->Cells(row,13)->V alue=GetTagWord("7#高温计温度记录"); pExcel->Worksheets("sheet1")->Cells(row,14)->V alue=GetTagFloat("5#水箱流量记录"); pExcel->Worksheets("sheet1")->Cells(row,15)->V alue=GetTagWord("8#高温计温度记录"); pExcel->Worksheets("sheet1")->Cells(row,16)->V alue=GetTagChar("系统时间"); SetTagBit("钢温记录信号",0);}pExcel->ActiveWorkbook->Save;pExcel->Workbooks->Close();pExcel->Quit();__object_delete(pExcel);return 0;}2、存储脚本。
最新wincc生成excel
1给wincc中通过vbs写excel的方式做报表的初学者一点脚本我对该帖子不做任何限制,都可以自由拷贝使用。
方便初学者学习!//log子程序,40个数据记录,总共记录一周时间,写入excel,放到wincc 全局脚本中一分钟运行一次//如果是要整点报表也简单,判断一下当前的系统时间,t的初始值根据当前时间定义。
//本程序主要是演示数据记录的过程。
//在c:\建立一个excel文件,该文件可以是你的报表模版Option ExplicitFunction actionDim objExcelApp,objExcelbook,objExcelSheetDim tagshijian,sheetname,username,zhushiDim tagdayDim a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a1 8,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a3 5,a36,a37,a38,a39,a40Dim i,j,t,countDim msgDim patch,fnDim d,m,y,oh,mm,ssd=" "m="-"y="-"oh=":"mm=":"ss=""msg="记录报表成功"fn=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now)) patch="c:\"&fn&".xls"Set a1=HMIRuntime.Tags("a1")Set a2=HMIRuntime.Tags("a2")Set a3=HMIRuntime.Tags("a3")Set a4=HMIRuntime.Tags("a4")Set a5=HMIRuntime.Tags("a5")Set a7=HMIRuntime.Tags("a7") Set a8=HMIRuntime.Tags("a8") Set a9=HMIRuntime.Tags("a9") Set a10=HMIRuntime.Tags("a10") Set a11=HMIRuntime.Tags("a11") Set a12=HMIRuntime.Tags("a12") Set a13=HMIRuntime.Tags("a13") Set a14=HMIRuntime.Tags("a14") Set a15=HMIRuntime.Tags("a15") Set a16=HMIRuntime.Tags("a16") Set a17=HMIRuntime.Tags("a17") Set a18=HMIRuntime.Tags("a18") Set a19=HMIRuntime.Tags("a19") Set a20=HMIRuntime.Tags("a20") Set a21=HMIRuntime.Tags("a21") Set a22=HMIRuntime.Tags("a22") Set a23=HMIRuntime.Tags("a23")Set a25=HMIRuntime.Tags("a25") Set a26=HMIRuntime.Tags("a26") Set a27=HMIRuntime.Tags("a27") Set a28=HMIRuntime.Tags("a28") Set a29=HMIRuntime.Tags("a29") Set a30=HMIRuntime.Tags("a30") Set a31=HMIRuntime.Tags("a31") Set a32=HMIRuntime.Tags("a32") Set a33=HMIRuntime.Tags("a33") Set a34=HMIRuntime.Tags("a34") Set a35=HMIRuntime.Tags("a35") Set a36=HMIRuntime.Tags("a36") Set a37=HMIRuntime.Tags("a37") Set a38=HMIRuntime.Tags("a38") Set a39=HMIRuntime.Tags("a39") Set a40=HMIRuntime.Tags("a40")Set count=HMIRuntime.Tags("count")sheetname="Sheet1"tagshijian=NowSet objExcelApp=CreateObject("Excel.Application") objExcelApp.visible=FalseobjExcelApp.workbooks.open "C:\Table.xls"objExcelApp.worksheets(sheetname).activatecount.Readt=count.Value +1If t<4 Thencount.Write 4t=4Elsecount.Write tEnd IfIf t>10080 Thencount.Write 3t=4End IfFor t=t To tWith objExcelApp.worksheets(sheetname).cells(t,1).value=tagshijiana1.Read.cells(t,2).value=a1.Valuea2.Read.cells(t,3).value=a2.Valuea3.Read.cells(t,4).value=a3.Valuea4.Read.cells(t,5).value=a4.Valuea5.Read.cells(t,6).value=a5.Valuea6.Read.cells(t,7).value=a6.Valuea7.Reada8.Read.cells(t,9).value=a8.Value a9.Read.cells(t,10).value=a9.Value a10.Read.cells(t,11).value=a10.Value a11.Read.cells(t,12).value=a11.Value a12.Read.cells(t,13).value=a12.Value a13.Read.cells(t,14).value=a13.Value a14.Read.cells(t,15).value=a14.Value a15.Read.cells(t,16).value=a15.Value a16.Reada17.Read.cells(t,18).value=a17.Value a18.Read.cells(t,19).value=a18.Value a19.Read.cells(t,20).value=a19.Value a20.Read.cells(t,21).value=a20.Value a21.Read.cells(t,22).value=a21.Value a22.Read.cells(t,23).value=a22.Value a23.Read.cells(t,24).value=a23.Value a24.Read.cells(t,25).value=a24.Value a25.Reada26.Read.cells(t,27).value=a26.Value a27.Read.cells(t,28).value=a27.Value a28.Read.cells(t,29).value=a28.Value a29.Read.cells(t,30).value=a29.Value a30.Read.cells(t,31).value=a30.Value a31.Read.cells(t,32).value=a31.Value a32.Read.cells(t,33).value=a32.Value a33.Read.cells(t,34).value=a33.Value a34.Reada35.Read.cells(t,36).value=a35.Value a36.Read.cells(t,37).value=a36.Value a37.Read.cells(t,38).value=a37.Value a38.Read.cells(t,39).value=a38.Value a39.Read.cells(t,40).value=a39.Value a40.Read.cells(t,41).value=a40.ValueEnd WithNextobjExcelApp.ActiveWorkbook.SaveobjExcelApp.ActiveWorkbook.closeobjExcelApp.ActiveWorkbook.QuitSet objExcelApp=NothingEnd Function//SAVE子程序//保存文件//读出系统时间,把文件保存为以日期为文件名的文件//每周日的23:59:10执行一次Option ExplicitFunction actionDim objExcelApp,objExcelbook,objExcelSheetDim sheetname,usernameDim tagdayDim i,j,tDim msgDim patch,fnfn=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))+CStr(Hour(Now)) &CStr(Minute(Now))patch="c:\"&fn&".xls"sheetname="Sheet1"Set objExcelApp=CreateObject("Excel.Application")objExcelApp.visible=FalseobjExcelApp.workbooks.open "C:\Table.xls"objExcelApp.worksheets(sheetname).activateobjExcelApp.ActiveWorkbook.SaveAs patchobjExcelApp.ActiveWorkbook.SaveobjExcelApp.ActiveWorkbook.closeobjExcelApp.ActiveWorkbook.QuitSet objExcelApp=NothingEnd Function//delete子程序//删除模版,拷贝空白模版到当前目录//有人会问,为什么不用vb清空当前已经记录数据的模版文件//问的好,如果这个模版里面已经存了几万条数据了呢?//所以最快的方法是用vc脚本,将当前模版删除,拷贝一个空的模版到c:/ /每周日的23:59:30执行一次#include "apdefap.h"int gscAction( void ){#pragma option(mbcs)// WINCC:TAGNAME_SECTION_START// syntax: #define TagNameInAction "DMTagName"// next TagID : 1// WINCC:TAGNAME_SECTION_END#pragma code("kernel32.dll")long CopyFileA(LPCTSTR,LPCTSTR,long);long DeleteFileA(LPCTSTR);#pragma code()DeleteFileA("C:\\Table.xls");CopyFileA("C:\\bak\\Table.xls","C:\\Table.xls",TRUE);// WINCC:PICNAME_SECTION_START// syntax: #define PicNameInAction "PictureName"// next PicID : 1// WINCC:PICNAME_SECTION_ENDreturn 0;}2。
wicc 写EXCEL 表格
3 其他图形代码
Hale Waihona Puke WICC 写EXCEL 表格
1. WINCC新建EXCEL,并把变量值和公式值计算后的值写入 EXCEL表格中
On Error Resume Next Dim objExcelApp Set objExcelApp=CreateObject("Excel.Application")'创建表格对象模型 objExcelApp.Visible=False objExcelApp.Workbooks.add objExcelApp.worksheets(1).name="我的" objExcelApp.Worksheets("我的").Activate '激活工作表格 With objExcelApp.worksheets("我的") '数据写 .cells(2,2).value = HMIRuntime.Tags("EXCEL_1").read .cells(2,3).value= HMIRuntime.Tags("EXCEL_2").read .cells(3,2).value= HMIRuntime.Tags("EXCEL_3").read .cells(3,3).Formula = HMIRuntime.Tags("EXCEL_4").read .cells(4,2).Formula = "=MAX(R2C2:R3C2)" .cells(4,3).Formula = "=AVERAGE(R2C2:R3C3)" End With
objExcelApp.Activeworkbook.saveAs "e:\我的.xls" objExcelApp.Workbooks.Close'退出工作簿 objExcelApp.Quit '表格模型退出 Set objExcelApp= Nothing'释放资源 Set fso=Nothing'释放资源
WINCC嵌入式EXCEL报表系统使用手册
WINCC 嵌入式EXCEL 报表系统使用手册1、打开报表画面点击主画面中“报表”按钮,打开报表画面:2、界面介绍报表画面功能介绍时间设置3、选择报表文件在“报表选择”栏中选择需要生成报表的名称:4、选择报表类型在“类型选择”栏选择报表类型:日报表、月报表、年报表、自由报表,具体介绍如下:●日报表——为一天的报表数据,每小时产生一个记录,共24条记录,时间为“00:00:00”至“23:59:59”。
●月报表——为一月的报表数据,每天产生一个记录,根据月份的不同分别产生28-31条记录,时间为“01 00:00:00”至“30 23:59:59”(或“2823:59:59”/“29 23:59:59”/“31 23:59:59”)。
●年报表——为一年的报表数据,每月产生一个记录,共12条记录,时间为“01-01 00:00:00”至“12-31 23:59:59”。
●自由报表——为指定时间段的报表数据,时间段由“开始时间”和“结束时间”共同决定,每一个“时间间隔”产生一个记录,记录条数由时间段和时间间隔决定。
5、设置报表时间根据报表类型,选择报表时间。
点击“日历”可以打开日历控件,控件中可以快速选择日月年,也可以通过下拉窗口进行选择。
当为日报表时,需要设置“年”、“月”、“日”;当为月报表时,需要设置“年”、“月”;当为年报表时,需要设置“年”;当为自由报表时,需要设置开始和结束时间的“年”、“月”,“日”、“时”、“分”等全部项,间隔时间也需要设置。
6、生成报表当“报表选择”、“类型选择”和时间选择均设置完成后,点击“生成报表”按钮,系统将开始在右边表格中生成出报表,在生成报表的过程中能看见表格中数据逐渐显示,也能通过下方进度条看见完成情况。
生成报表时,空数据区用“#”填充,错误数据区用“##”填充,报表生成完毕后将有“成功生成数据文件!”提示。
同时,报表生成后将自动保存到项目中“report”文件夹下。
在wincc 中怎么做才能把报表生成按日期的excel 文件
在wincc 中怎么做才能把报表生成按日期的excel 文件在wincc 中怎么做才能把报表生成按日期的Excel 文件VBS脚本实现,就是把文件名称以变量的形式表示。
参考'关闭保存Dim patch,filenamefilename=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))&CStr(Hour(N ow))+CStr(Minute(Now))&CStr(Second(Now))patch= "d:\"&filename&"demo.xls"objExcelApp.ActiveWorkbook.SaveAs patch objExcelApp.Workbooks.Close objExcelApp.QuitSet objExcelApp= Nothing对于Excel报表,用VBS最灵活,Excel 定义好格式后wincc来填空,平均累计值就用Excel 的功能。
Dim excelappDim aa,bb,ccSet excelapp = CreateObject("Excel.Application") Set aa = HMIRuntime.tags("tag1")excelapp.visible = False'Trueexcelapp.workbooks.open "D:\excel.xls" bb = Now'getcurrent_datetime()aa.ReadMsgBox CStr(bb)excelapp.cells(1,1).value = "rrrrrr"'111111excelapp.cells(1,2).value = CStr(bb)excelapp.cells(2,2).value = CStr(aa.value) excelapp.cells(3,2).value = CInt(aa.value) excelapp.cells(4,2).value = CSng(aa.value)excelapp.cells(5,2).value = CDbl(aa.value) excelapp.cells(6,2).value = CLng(aa.value) excelapp.cells(3,3).value = ScreenItems("33").outputvalue excelapp.cells(4,4).value = ScreenItems("35").outputvaluecc = "D:\excel" + Mid(CStr(bb), 1, 4)+ Mid(CStr(bb), 6, 2)+Mid(CStr(bb), 9, 2)+ Mid(CStr(bb), 12, 2)+ Mid(CStr(bb), 15, 2)+ Mid(CStr(bb), 18, 2) + ".xls"MsgBox ccexcelapp.DisplayAlerts = False '对打开的文件,直接保存时,避免弹出对话框窗口,而是直接覆盖excelapp.activeworkbook.saveas cc '根据当前日期时间,另存为新的文件'excelapp.activeworkbook.save ’对打开的文件,直接保存'excelapp.activeworkbook.saveAs "D:\excelcopy.xls" ’直接另存为新的文件excelapp.workbooks.closeexcelapp.quitSet excelapp = Nothing这个报表的数据采集没有难度;唯一的难度在于4班3 倒后,每个月班的出勤日是不一样的,这样对于月报来说,计算出本月每个班的出勤日是需要些算法的。
excel 表格和wincc的报表
如何使用WinCC DataMonitor基于Web发布浏览Excel报表文档 How to use WinCC DataMonitor publish and view excel document base on Web摘要本文介绍使用 WinCC DataMonitor 的 "Excel Workbooks",通过 Excel 表格显示 WinCC 项目的过程值、归档变量值和归档消息。
并可以通过 Web 发布浏览访问数据。
关键词WinCC,DataMonitor,ExcelKey Words WinCC,DataMonitor,ExcelA&D Service & Support Page 2-14目录1.WinCC DataMonitor是什么 ? (4)1.1 简介 (4)1.2 WinCC DataMonitor 的主要功能 (4)2.使用WinCC DataMonitor基于Web发布浏览Excel报表文档 (7)2.1 使用“Excel 工作簿向导”组态发布 Excel 工作簿 (7)2.2 在线显示浏览Excel 工作簿 (12)A&D Service & Support Page 3-141.WinCC DataMonitor是什么 ?DataMonitor 是 SIMATIC WinCC 工厂智能中用于数据显示和分析的一个组件,它基于WinCC 的实时、历史数据进行车间管理级的数据汇总和分析,借助标准工具(例如微软的 IE 浏览器或者 MS Office Excel)可以显示并分析 WinCC 上的过程信息和历史数据。
1.1 简介SIMATIC WinCC/DataMonitor 提供用于显示交互数据及分析当前过程状态和历史数据的分析工具集合。
DataMonitor 客户端是纯粹用于显示和评估来自 WinCC 的过程值或来自 WinCC 长期归档服务器的数据的系统。
WINCC通过工业数据桥将数据记录导出到Excel
WINCC通过工业数据桥将数据记录导出到ExcelWINCC通过工业数据桥将数据记录导出到Excel表格一软件版本说明1.经典版WINCC V7.4SP12.Industrial Data Bridge V7.4SP13.Excel 2007 包含多种版本都可使用,本实例为2007版本。
二组态wincc画面1.组态内部变量tag2_datalog:用不变量记录数据tag1_tigger:触发变量,用于触发记录数据2.组态变量记录4.组态画面准备工作:在计算机-属性-启动-选择变量记录运行系统。
组态画面三工业数据桥设置1.创建连接打开工业数据桥组态软件,创建一个新的连接数据提供方:OPC Data Access数据消费方:Excel分别在下拉列表中选择上述参数。
2.设置数据提供方数据点击Provide(OPCDA)组态数据OPC服务器:OPC Server. WINCC节点名称:Localhost 本地主叫2.消费方组态设置文件路径为设计文件夹下-IDB文件夹。
高级选项中的设置可全部为默认设置即可。
3 设置项目设置传送选项触发变量:选择定义好的触发变量触发值为1:当触发值设置为1时记录一次数据。
确认值2:将提供方数据与消费方数据一一映射。
3.保存工业数据桥组态数据点击下图红色圈内的箭头,将数据保存在设计文件-IDB文件夹下即可。
四.设置工业数据桥运行系统1 选择组态文件双击打开idb2即可。
接下来电机connect 和start 即可进行数据传送传送结束,点击stop和disconnect即可完成数据传输,自动生成Excel数据表格。
在设计文件下-IDB文件夹下打开EXCEL文件即可。
WinCC中全局脚本VBS归档到Excel
WinCC中全局脚本VBS归档到Excel中用一个变量触发数据归档到Excel中,请高手看看我写的为何不能运行。
Sub procedure1If Item.OutputValue = "NewTag" ThenDim oVar,oBlendingVar,objExcelApp,oWorkBook,ExcelTableFull,oFileNameOn Error Resume NextExcelTableFull=0Set objExcelApp=CreateObject("Excel.Application")objExcelApp.Visible=FalseSet oWorkBook=objExcelApp.Workbooks.Open("D:\BKHL_HXBJ\模板\Receipt_Table.xls") Dim iBlankLineiBlankLine=oWorkBook.ActiveSheet.Columns(1).Find("0").Row'MsgBox("iBlankLine="&iBlankLine)If iBlankLine<504 ThenobjExcelApp.Cells(iBlankLine,1).Value=HMIRuntime.SmartTags("Recipe_Number").Value objExcelApp.Cells(iBlankLine,2).Value=HMIRuntime.SmartTags("BaseOil_Percent_1").Value objExcelApp.Cells(iBlankLine,3).Value=HMIRuntime.SmartTags("BaseOil_Percent_2").Value objExcelApp.Cells(iBlankLine,4).Value=HMIRuntime.SmartTags("BaseOil_Percent_3").Value objExcelApp.Cells(iBlankLine,5).Value=HMIRuntime.SmartTags("BaseOil_Percent_4").Value objExcelApp.Cells(iBlankLine,6).Value=HMIRuntime.SmartTags("BaseOil_Percent_5").Value objExcelApp.Cells(iBlankLine,7).Value=HMIRuntime.SmartTags("BaseOil_Percent_6").Value objExcelApp.Cells(iBlankLine,8).Value=HMIRuntime.SmartTags("BaseOil_Percent_7").Value objExcelApp.Cells(iBlankLine,9).Value=HMIRuntime.SmartTags("BaseOil_Percent_8").Value objExcelApp.Cells(iBlankLine,10).Value=HMIRuntime.SmartTags("Additive_Percent_1").Value objExcelApp.Cells(iBlankLine,11).V alue=HMIRuntime.SmartTags("Additive_Percent_2").Value objExcelApp.Cells(iBlankLine,12).Value=HMIRuntime.SmartTags("Additive_Percent_3").Value objExcelApp.Cells(iBlankLine,13).Value=HMIRuntime.SmartTags("Additive_Percent_4").Value objExcelApp.Cells(iBlankLine,14).Value=HMIRuntime.SmartTags("Additive_Percent_5").Value objExcelApp.Cells(iBlankLine,15).Value=HMIRuntime.SmartTags("Additive_Percent_6").Value objExcelApp.Cells(iBlankLine,16).Value=HMIRuntime.SmartTags("Additive_Percent_7").Value objExcelApp.Cells(iBlankLine,17).Value=HMIRuntime.SmartTags("Additive_Percent_8").ValueElse'MsgBox("Data Table Full,Copy to the backup file,continue ?")objExcelApp.displayalerts=FalseoFileName=CStr("D:\BKHL_HXBJ\模板\运行数据_"&Month(Date)&"月"&Day(Date)&"日"&"_"& Hour(Time)&"时"&Minute(Time)&"分"&".xls")oWorkBook.Saveas(oFileName)ExcelTableFull=1objExcelApp.displayalerts=TrueEnd IfoWorkBook.SaveobjExcelApp.Workbooks.CloseobjExcelApp.QuitSet objExcelApp=NothingSet oWorkBook=NothingIf ExcelTableFull=1 Then'MsgBox("Data Table Full, Clear the current data table, continus?")Set objExcelApp=CreateObject("Excel.Application")objExcelApp.Visible=FalseSet oWorkBook=objExcelApp.Workbooks.Open("D:\BKHL_HXBJ\模板\Receipt_Table_Templet.xls")objExcelApp.displayalerts=FalseoWorkBook.Saveas("D:\BKHL_HXBJ\模板\Receipt_Table.xls")objExcelApp.displayalerts=TrueoWorkBook.SaveobjExcelApp.Workbooks.CloseobjExcelApp.QuitSet objExcelApp=NothingSet oWorkBook=NothingEnd IfEnd IfEnd Sub本文转自亿万论坛:/a/a.asp?B=302&ID=1218853&q=1&r=140751。
如何通过 VBS 操作 WINCC 在线数据控件并导出至 EXCEL(附带程序)
如何通过VBS 操作WINCC 在线数据控件并导出至EXCEL(附带程序)1 概述本文主要介绍如何通过 VBS 操作 WINCC 在线数据表格控件。
开发环境:PCS7 V8.2 SP1 / WINCC 7.4 SP1使用限制:1) 时间间隔最多至 1 分钟2) 时间范围太长,数据加载可能会比较慢3) 导出文件 EXCEL 没有置顶,导出后要切换到 EXCEL 程序。
扩展性:可扩展选择参数、保存导出文件、生成 PDF 等功能。
本例采用将参数提前组态在控件内,运行中通过复选框来实现选择。
也可完全使用脚本实现参数添加。
详见附加信息>通过脚本新增参数图 1 根据选择查询数据图 2 导出数据成功图 3 在 EXCEL 中查看导出的数据文件3.1 画面部件说明图 5 测试画面部件说明3.1.1 添加时间控件添加 WINCC Activex 控件 Date and time picker,如下图:图 6 添加时间控件3.1.2 设置导出模板本例设置的 excel 文件模板路径:"\\"+ServerName+"\Export\Export.xlsx",可根据项目情况采用其它导出路径和模板。
如果更换了模板或路径,必须修改导出脚本内的路径。
模板内主要设置了字体、数据格式、显示的小数点位数和列宽,也可再增加页眉、页脚、LOGO 等,以达到更好的显示效果。
3.2 画面打开在画面打开事件内,设置如下脚本,用于初始化画面内各控件:图 7 画面打开事件脚本3.3 选择数值参数版设计图 8 添加参数选择复选框设置复选框,在复选框更改事件下添加脚本:图 9 数据参数显示隐藏设置脚本图 10 脚本与控件属性对应关系 3.4 设置时间系数属性:TimeStepFactor图 11 修改时间间隔脚本图 12 修改时间系数 3.5 设定时间范围在查询按钮释放左键事件里:图 14 时间范围查询按钮事件图 14 时间范围查询按钮事件 3.6 导出在导出按钮释放左键事件里:图 16 导出按钮脚本图 17 导出后自动打开文件夹图 18 新增参数脚本图 19 新增参数运行效果。
wincc生成excel
wincc生成excel给wincc中通过vbs写excel的方式做报表的初学者一点脚本我对该帖子不做任何限制,都可以自由拷贝使用。
方便初学者学习!//log子程序,40个数据记录,总共记录一周时间,写入excel,放到wincc 全局脚本中一分钟运行一次//如果是要整点报表也简单,判断一下当前的系统时间,t的初始值根据当前时间定义。
//本程序主要是演示数据记录的过程。
//在c:\建立一个excel文件,该文件可以是你的报表模版Option ExplicitFunction actionDim objExcelApp,objExcelbook,objExcelSheetDim tagshijian,sheetname,username,zhushiDim tagdayDima1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a 19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36,a3 7,a38,a39,a40 Dim i,j,t,countDim msgDim patch,fnDim d,m,y,oh,mm,ssd=" "m="-"y="-"oh=":"mm=":"ss=""msg="记录报表成功"fn=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now)) patch="c:\"&fn&".xls"Set a1=HMIRuntime.Tags("a1")Set a2=HMIRuntime.Tags("a2")Set a3=HMIRuntime.Tags("a3")Set a4=HMIRuntime.Tags("a4")Set a5=HMIRuntime.Tags("a5")Set a6=HMIRuntime.Tags("a6")Set a7=HMIRuntime.Tags("a7")Set a8=HMIRuntime.Tags("a8")Set a9=HMIRuntime.Tags("a9")Set a10=HMIRuntime.Tags("a10")Set a11=HMIRuntime.Tags("a11")Set a12=HMIRuntime.Tags("a12")Set a13=HMIRuntime.Tags("a13")Set a14=HMIRuntime.Tags("a14")Set a15=HMIRuntime.Tags("a15")Set a16=HMIRuntime.Tags("a16")Set a17=HMIRuntime.Tags("a17")Set a18=HMIRuntime.Tags("a18")Set a19=HMIRuntime.Tags("a19")Set a20=HMIRuntime.Tags("a20")Set a21=HMIRuntime.Tags("a21")Set a22=HMIRuntime.Tags("a22")Set a23=HMIRuntime.Tags("a23")Set a24=HMIRuntime.Tags("a24")Set a25=HMIRuntime.Tags("a25")Set a26=HMIRuntime.Tags("a26")Set a27=HMIRuntime.Tags("a27")Set a28=HMIRuntime.Tags("a28")Set a29=HMIRuntime.Tags("a29")Set a30=HMIRuntime.Tags("a30")Set a31=HMIRuntime.Tags("a31")Set a32=HMIRuntime.Tags("a32")Set a33=HMIRuntime.Tags("a33")Set a34=HMIRuntime.Tags("a34")Set a35=HMIRuntime.Tags("a35")Set a36=HMIRuntime.Tags("a36")Set a37=HMIRuntime.Tags("a37")Set a38=HMIRuntime.Tags("a38")Set a39=HMIRuntime.Tags("a39")Set a40=HMIRuntime.Tags("a40")Set count=HMIRuntime.Tags("count")sheetname="Sheet1"tagshijian=NowSet objExcelApp=CreateObject("Excel.Application") objExcelApp.visible=FalseobjExcelApp.workbooks.open "C:\Table.xls"objExcelApp.worksheets(sheetname).activatecount.Readt=count.Value +1If t<4 Thencount.Write 4t=4Elsecount.Write tEnd IfIf t>10080 Thencount.Write 3t=4End IfFor t=t To tWith objExcelApp.worksheets(sheetname) .cells(t,1).value=tagshijiana1.Read.cells(t,2).value=a1.Valuea2.Read.cells(t,3).value=a2.Valuea3.Read.cells(t,4).value=a3.Valuea4.Read.cells(t,5).value=a4.Valuea5.Read.cells(t,6).value=a5.Valuea6.Read.cells(t,7).value=a6.Valuea7.Read.cells(t,8).value=a7.Valuea8.Read.cells(t,9).value=a8.Valuea9.Read.cells(t,10).value=a9.Valuea10.Read.cells(t,11).value=a10.Valuea11.Read.cells(t,12).value=a11.Valuea12.Read.cells(t,13).value=a12.Valuea13.Read.cells(t,14).value=a13.Valuea14.Read.cells(t,15).value=a14.Valuea15.Read.cells(t,16).value=a15.Valuea16.Read.cells(t,17).value=a16.Valuea17.Read.cells(t,18).value=a17.Valuea18.Read.cells(t,19).value=a18.Valuea19.Read.cells(t,20).value=a19.Valuea20.Read.cells(t,21).value=a20.Value a21.Read .cells(t,22).value=a21.Value a22.Read .cells(t,23).value=a22.Value a23.Read .cells(t,24).value=a23.Value a24.Read .cells(t,25).value=a24.Value a25.Read .cells(t,26).value=a25.Value a26.Read .cells(t,27).value=a26.Value a27.Read .cells(t,28).value=a27.Value a28.Read .cells(t,29).value=a28.Value a29.Read .cells(t,30).value=a29.Value a30.Read .cells(t,31).value=a30.Value a31.Read .cells(t,32).value=a31.Value a32.Read .cells(t,33).value=a32.Value a33.Read .cells(t,34).value=a33.Value a34.Read .cells(t,35).value=a34.Value a35.Read .cells(t,36).value=a35.Value a36.Read .cells(t,37).value=a36.Value a37.Read.cells(t,38).value=a37.Value a38.Read.cells(t,39).value=a38.Value a39.Read.cells(t,40).value=a39.Value a40.Read.cells(t,41).value=a40.ValueEnd WithNextobjExcelApp.ActiveWorkbook.SaveobjExcelApp.ActiveWorkbook.closeobjExcelApp.ActiveWorkbook.QuitSet objExcelApp=NothingEnd Function//SAVE子程序//保存文件//读出系统时间,把文件保存为以日期为文件名的文件//每周日的23:59:10执行一次Option ExplicitFunction actionDim objExcelApp,objExcelbook,objExcelSheetDim sheetname,usernameDim tagdayDim i,j,tDim msgDim patch,fnfn=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))+C Str(Hour(Now))&CStr(Minute (Now))patch="c:\"&fn&".xls"sheetname="Sheet1"Set objExcelApp=CreateObject("Excel.Application")objExcelApp.visible=FalseobjExcelApp.workbooks.open "C:\Table.xls"objExcelApp.worksheets(sheetname).activateobjExcelApp.ActiveWorkbook.SaveAs patchobjExcelApp.ActiveWorkbook.SaveobjExcelApp.ActiveWorkbook.closeobjExcelApp.ActiveWorkbook.QuitSet objExcelApp=NothingEnd Function//delete子程序//删除模版,拷贝空白模版到当前目录//有人会问,为什么不用vb清空当前已经记录数据的模版文件//问的好,如果这个模版里面已经存了几万条数据了呢?//所以最快的方法是用vc脚本,将当前模版删除,拷贝一个空的模版到c://每周日的23:59:30执行一次#include "apdefap.h"int gscAction( void ){#pragma option(mbcs)// WINCC:TAGNAME_SECTION_START// syntax: #define TagNameInAction "DMTagName"// next TagID : 1// WINCC:TAGNAME_SECTION_END#pragma code("kernel32.dll")long CopyFileA(LPCTSTR,LPCTSTR,long);long DeleteFileA(LPCTSTR);#pragma code()DeleteFileA("C:\\Table.xls");CopyFileA("C:\\bak\\Table.xls","C:\\Table.xls",TRUE);// WINCC:PICNAME_SECTION_START// syntax: #define PicNameInAction "PictureName"// next PicID : 1// WINCC:PICNAME_SECTION_END return 0;}。
wincc 通过VBS读取归档数据到EXCEL
1.建立变量strBeginTime和strEndTime为文本变量8位字符集,添加一个IO域,实际运行以后,无法输入格式如:2014-02-2512:00:00,怎么办?
2.手册里说需要添加一个GetLocalDate函数,如何添加呢?
2、用“year(now)&”-”&month(now)&”-”&day(now)”取当前的日期
3、直接复制里面的内容到脚本编辑器中。
我按照手册上的打开VBS编辑器,新建一个项目模块,然后把程序复制过去,,编译就出错,可见附件.怎么回事呢?
3.这个A0579指南提供的程序是TXT格式的,需要自己移植到WINCC里,我试了很多遍,都没成功,求指导一下,
图片说明:1,项目模块报错了2,如何添加GetLocalDate函数
最佳答案
1、你的io域的数据格式改成字符串就可以输入了
21.Wincc控件制作报表以及导出EXCEL方法介绍
21.Wincc控件制作报表以及导出EXCEL⽅法介绍假设希望做这样⼀个报表界⾯,可以根据⽇期查询:希望导出的excel报表⽂件在C盘根⽬录,是这个样⼦:接下来我们⼀步步实现这个功能。
1. Wincc历史趋势的数据库表结构有点不好理解,我们新建⼀个数据库名字叫做Report,新建⼀张表,结构是这个样⼦:注意开放sa⽤户,设置sa⽤户有管理report数据库权限,使⽤sql登陆模式。
2. 我们每5秒往report表写⼊⼀条记录,在全局VBS脚本写⼊如下代码:Option ExplicitFunction action'添加纪录Dim T1,T2,P1,P2,F1,F2,L1,L2,A1,A2,S1,S2Dim ors,conn,con,ssql,ocomDim PCNamePCName=hmiruntime.Tags("@LocalMachineName").ReadT1=HMIRuntime.Tags("温度1").ReadT2=HMIRuntime.Tags("温度2").ReadP1=HMIRuntime.Tags("压⼒1").ReadP2=HMIRuntime.Tags("压⼒2").ReadF1=HMIRuntime.Tags("流量1").ReadF2=HMIRuntime.Tags("流量2").ReadL1=HMIRuntime.Tags("液位1").ReadL2=HMIRuntime.Tags("液位2").ReadA1=HMIRuntime.Tags("分析仪1").ReadA2=HMIRuntime.Tags("分析仪2").ReadS1=HMIRuntime.Tags("转速1").ReadS2=HMIRuntime.Tags("转速2").Readcon="Provider = SQLOLEDB.1;password = sa;user id = sa;Initial Catalog =Report;Data Source = " & PCName & "\WINCC" Set conn=CreateObject("ADODB.Connection")conn.ConnectionString=conconn.Cursorlocation=3conn.openssql="insert into Report(CurDateTime,T1,T2,P1,P2,F1,F2,L1,L2,A1,A2,S1,S2) values(Getdate()," _& T1 & "," & T2 & "," & P1 & "," & P2 & "," & F1 & "," & F2 & "," & L1 & "," & L2 & "," & A1 & "," & A2 & "," & S1 & "," & S2 & ")"Set ors=CreateObject("ADODB.RecordSet")Set ocom=CreateObject("mand")Set ocom.activeconnection=connmandType=1mandText=ssqlSet ors=ocom.ExecuteSet ors=Nothingconn.closeSet conn=NothingEnd Function脚本中的函数不做解释。
WINCC中打印EXCEL
pExcel->WorkSheets("sheet1")->Cells(11,3)->Value=GetTagFloat("MAI1AI8");//PI101b
pExcel->WorkSheets("sheet1")->Cells(6,7)->Value=GetTagFloat("MAI2AI7");//FTQ101a
pExcel->WorkSheets("sheet1")->Cells(7,7)->Value=GetTagFloat("MAI2AI8");//FTQ101b
flag1=GetTagBit("MDI1DI1");
flag2=GetTagBit("MDI1DI2");
if(flag1==1&&flag2==0)
{
pExcel->WorkSheets("sheet1")->Cells(8,7)->Value="开";//ZSTC-101a
}
if(flag1==1&&flag2==0)
{
pExcel->WorkSheets("sheet1")->Cells(9,7)->Value="开";//ZSTC-101a
wincc6 实时向excel传送数据 并保存以当天日期为名
主题:wincc6实时向excel传送数据并保存以当天日期为名建立一个模本excel文件d:\ExcelExample.xlswincc里创建内部变量i,无符号32位在全局脚本vb创建两个动作1、复制另存ExcelExample.xls,并改名为当天日期,触发周期为1天,i被赋值为2Option ExplicitFunction actionDim fso,myfile,daystr,dstr,fnamedstr = FormatDateTime(Date)fname="d:\" + dstr + ".xls"Set fso = CreateObject("s cripting.FileSystemObject")Set MyFile = fso.GetFile("d:\ExcelExample.xls")MyFile.Copy (fname)HMIRuntime.Tags("i").write 2End Function2、往当天的excel文件里写数据,并保存Option ExplicitFunction actionDim fso,myfile,daystr,dstr,fnamedstr = FormatDateTime(Date)fname="d:\" + dstr + ".xls"Dim ObjExcelAppSet objExcelApp = CreateObject("Excel.Application")objExcelApp.Workbooks.Open fnameDim iHMIRuntime.Tags("i").write HMIRuntime.Tags("i").Read+1i=HMIRuntime.Tags("i").ReadobjExcelApp.worksheets ("sheet1").Cells(i, 2).VAlue = HMIRuntime.Tags("I-COD").readobjExcelApp.worksheets ("sheet1").Cells(i, 3).VAlue = HMIRuntime.Tags("I-SS").readobjExcelApp.worksheets ("sheet1").Cells(i, 4).VAlue = HMIRuntime.Tags("I-PH").readobjExcelApp.worksheets ("sheet1").Cells(i, 5).VAlue = HMIRuntime.Tags("I-F").readobjExcelApp.worksheets ("sheet1").Cells(i, 6).VAlue = HMIRuntime.Tags("I-FI").readobjExcelApp.worksheets ("sheet1").Cells(i, 7).VAlue = HMIRuntime.Tags("O-COD").readobjExcelApp.worksheets ("sheet1").Cells(i, 8).VAlue = HMIRuntime.Tags("O-SS").readobjExcelApp.worksheets ("sheet1").Cells(i, 9).VAlue = HMIRuntime.Tags("O-NH4N").readobjExcelApp.worksheets ("sheet1").Cells(i, 10).VAlue = HMIRuntime.Tags("0-P").readobjExcelApp.worksheets ("sheet1").Cells(i, 11).VAlue = HMIRuntime.Tags("O-F").readobjExcelApp.worksheets ("sheet1").Cells(i, 12).VAlue = HMIRuntime.Tags("O-FI").readobjExcelApp.worksheets ("sheet1").Cells(i, 1).VAlue =NowobjExcelApp.ActiveWorkbook.SaveobjExcelApp.Workbooks.ClosEobjExcelApp.QuiTSet ObjEXceLapp = NothingEnd Function问题:怎么在退出wincc时,保存i的值,使wincc再激活时,向excel最后位置写数据注:从wincc帮助抄的程序试了啊不过现在的程序改了第一段:Option ExplicitFunction actionDim fso,myfile,daystr,dstr,fnamedstr = FormatDateTime(Date)fname="d:\" + dstr + ".xls"Set fso = CreateObject("s cripting.FileSystemObject")Set MyFile = fso.GetFile("d:\ExcelExample.xls")MyFile.Copy (fname)End Function第二段:Option ExplicitFunction actionDim fso,myfilep,daystr,dstr,fnameSet fso = CreateObject("s cripting.FileSystemObject")dstr = FormatDateTime(Date)HMIRuntime.Tags("i").write fso.GetAbsolutePathName("") fname=HMIRuntime.ActiveProject.Path++dstr+.xlsDim ObjExcelAppSet objExcelApp = CreateObject("Excel.Application")objExCelApp.Visible = TrueobjExcelApp.Workbooks.Open fnameDim ii=1Do While objExcelApp.worksheets ("sheet1").Cells(i, 1).VAlue<>""i=i+1LoopobjExcelApp.worksheets ("sheet1").Cells(i, 2).VAlue = HMIRuntime.Tags("I-COD").readobjExcelApp.worksheets ("sheet1").Cells(i, 3).VAlue = HMIRuntime.Tags("I-SS").readobjExcelApp.worksheets ("sheet1").Cells(i, 4).VAlue = HMIRuntime.Tags("I-PH").readobjExcelApp.worksheets ("sheet1").Cells(i, 5).VAlue = HMIRuntime.Tags("I-F").readobjExcelApp.worksheets ("sheet1").Cells(i, 6).VAlue = HMIRuntime.Tags("I-FI").readobjExcelApp.worksheets ("sheet1").Cells(i, 7).VAlue = HMIRuntime.Tags("O-COD").readobjExcelApp.worksheets ("sheet1").Cells(i, 8).VAlue = HMIRuntime.Tags("O-SS").readobjExcelApp.worksheets ("sheet1").Cells(i, 9).VAlue = HMIRuntime.Tags("O-NH4N").readobjExcelApp.worksheets ("sheet1").Cells(i, 10).VAlue = HMIRuntime.Tags("0-P").readobjExcelApp.worksheets ("sheet1").Cells(i, 11).VAlue = HMIRuntime.Tags("O-F").readobjExcelApp.worksheets ("sheet1").Cells(i, 12).VAlue = HMIRuntime.Tags("O-FI").readobjExcelApp.worksheets ("sheet1").Cells(i, 1).VAlue =NowobjExcelApp.ActiveWorkbook.SaveobjExcelApp.Workbooks.ClosEobjExcelApp.QuiTSet ObjEXceLapp = NothingEnd Function其中objExCelApp.Visible = True可以去掉,就是后台操作了这两段程序分别是两个动作第一段的触发周期是一天,作用是复制另存ExcelExample.xls,并改名为当天日期第二段是忘当天的excel文件里写数据的,触发周期根据个人情况,测试时可以定为10秒,就是每10秒写一次数据另外第二段里的HMIRuntime.Tags都是我wincc里的变量,要根据自己的情况修改。
在WinCC中如何使用VBS读取报警记录数据到EXCEL
在WinCC中如何使用VBS读取报警记录数据到EXCEL1概述介绍如何在WinCC项目中使用VBS脚本读取报警记录归档数据,并把获取的数据保存成新的Excel文件。
2软件环境Windows XP SP3中文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 20073访问原理WinCC报警记录数据是以压缩的形式存储在数据库中,需要通过WinCC连通性软件包提供的OLE-DB接口才能够解压并读取这些数据。
关于WinCC连通性软件包的详细信息请参考连接:37436159当使用OLE-DB方式访问数据库时关键需要注意连接字符串的写法和查询语句的格式。
连接字符串格式为“Provider= WinCCOLEDBProvider.1; Catalog= ***; Data Source= ***;”,其中:Catalog为WinCC运行数据库的名称,当修改项目名称或在其它计算机上打开原项目时, Catalog会发生变化。
建议使用WinCC内部变量“@DatasourceNameRT” 获得当前项目的Catalog。
Data Source 为服务器名称,格式为“<计算机名称>\WinCC”。
3.1 查询语句格式查询语句的格式要求如下:AlARMVIEW:SELECT * FROM <ViewName> [ WHERE<Condition>……optional ]其中参数信息如下所示:ViewName:数据库表名。
必须用需要的语言指定该表。
比如:中文字符表名为:ALGVIEWCHT,英文字符表明为:ALGVIEWENU等。
Condition:为过滤标准。
详细说明请参见下表:表1查询参数表3.2查询结果查询结果作为记录集返回。
可以根据需要有选择的返回特定的数据集。
例如:oRs.Fields(0).Value 返回的是消息的编号;oRs.Fields(2).Value 返回的是消息的时间戳;oRs.Fields(37).Value返回的是消息文本的内容。
wincc与access形成EXCEL报表的实现(自己写的)
使用wincc、access、excel生成生产报表,希望对大家有所帮助!Excel需要安装datetime控件Excel的使用:在Excel表格中,将每个工位分为一个表格来用,右击底部表格,查看代码。
在代码段,将数据库的实际存放路径相对应。
如需该表头,在底部的表格value后边括号中修改。
在wincc中打开excel文件的方法:ProgramExecute("D:\\Program Files\\Microsoft Office\\OFFICE11\\excel.exe D:\\大自然报表.xls");//说明:双引号里边有两部分路径组成(execel安装路径、excel表格文件所在路径)路径之间//有空格隔离;路径阶层有双斜杠(\\)隔离。
Wincc中用于向access形成的数据源存储数据脚本程序:数据库:wincce; 表3;ODBC名称:wincce1A:B计量泵电流1B:B计量泵频率设置1C:B计量泵频率1D:A计量泵电流1E:A计量泵频率设置1F:A计量泵频率程序:Dim objConnectionDim strConnectionStringDim a,b,c,d,e,f,g,h,i,j,kDim strSQLDim objCommandstrConnectionString = "Provider=MSDASQL;DSN=wincce;UID=;PWD=;"a = HMIRuntime.Tags("B计量泵电流").Readb = HMIRuntime.Tags("B计量泵频率设置").Readc = HMIRuntime.Tags("B计量泵频率").Readd = HMIRuntime.Tags("A计量泵电流").Reade = HMIRuntime.Tags("A计量泵频率设置").Readf = HMIRuntime.Tags("A计量泵频率").ReadstrSQL = "INSERT INTO 表 3 (时间,1A,1B,1C,1D,1E,1F) VALUES (Now(),"&a&","&b&","&c&","&d&","&e&","&f&");"Set objConnection = CreateObject("ADODB.Connection")objConnection.ConnectionString = strConnectionStringobjConnection.OpenSet objCommand = CreateObject("mand")With objCommand.ActiveConnection = objConnection.CommandText = strSQLEnd WithobjCommand.ExecuteSet objCommand = NothingobjConnection.CloseSet objConnection = NothingExcel中用于对数据进行通讯的VBA程序Dim sstart, sstop, bstart, btop As StringPublic Function a()'首先引用ado --------- 點“工具-引用”再找到Microsoft ActiveX Date Objects X.X LibraryWorksheets("蒸馏塔2").StandardWidth = 14Worksheets("蒸馏塔2").Columns.Font.Size = 8Dim YEAR, MONTH, DAY As StringDim conn As New ADODB.ConnectionDim connstr As StringDim db As StringDim rs As New ADODB.RecordsetDim i, j As Long, rowa As Longdb = "D:\winccb.mdb"connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbOn Error Resume Nextconn.Open connstrrs.Open "select * from 表3 where 时间between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "# ", conn, 1, 3If rs.EOF Or rs.BOF ThenMsgBox "It is nothing."Elserowa = 3Worksheets("蒸馏塔2").Cells(2, 1).Value = "时间"Worksheets("蒸馏塔2").Cells(2, 2).Value = "测取泵流量"Worksheets("蒸馏塔2").Cells(2, 3).Value = "测取泵流量"Worksheets("蒸馏塔2").Cells(2, 4).Value = "E603温度"Worksheets("蒸馏塔2").Cells(2, 5).Value = "E504温度"Worksheets("蒸馏塔2").Cells(2, 6).Value = "E501温度"Worksheets("蒸馏塔2").Cells(2, 7).Value = "蒸馏塔冷却器温度"Worksheets("蒸馏塔2").Cells(2, 8).Value = "蒸馏塔回流流量"Do Until rs.EOFFor j = 0 To rs.Fields.CountWorksheets("蒸馏塔2").Cells(rowa, j).Value = rs(j - 1)Next jrowa = rowa + 1rs.MoveNextLoopEnd IfEnd FunctionPrivate Sub CommandButton1_Click() aEnd SubPrivate Sub CommandButton2_Click() Worksheets("蒸馏塔2").Cells.Clear End Sub。
WinCC通过VBS的Excel文件操作
I S TAS
2/7
objFSO.CreateFolder "C:\Path"
1.3 拷贝文件夹 objFSO.CopyFolder "C:\Path" "C:\Path2" 1.4 移动文件夹 objFSO.MoveFolder "C:\Path" "C:\Path2" 1.5 删除文件夹 objFSO.DeleteFolder "C:\Path"
对象集合 集合 Columns Rows Dialogs Sheets
描述 表示活动工作簿中的列 表示活动工作簿中的行 Excel 程序中所有的对话框 指定或活动工作簿中所有的工作表
对象属性 属性 ActiveCell ActiveChart ActiveSheet ActiveWindow ActiveWorkbook RangeSelection Selection
提供包含在文件夹内的所有文件的列表。 包含用来创建、删除或移动文件夹的方法和属性,也用来 向系统询问文件夹名、路径和多种其他属性。 提供在 Folder 内的所有文件夹的列表。 用来读写文本文件。
FSO 包含在 Scripting 类型库中,因此访问 FSO 需要先使用下面代码创建 FSO 对象的一个 实例:
4.2 添加按钮 “Write xls ”,在按钮鼠标事件中加入如下脚本:
Dim xlApp, xlPath, xlFile, xlBook, xlSheet Dim i, t Dim objFSO, objFlexGrid, objProcessBar
'当前项目路径下如果不存在 \Excel 子目录则新建 Set objFSO = CreateObject("Scripting.FileSystemObject") xlPath = HMIRuntime.ActiveProject.Path & "\Excel" If Not objFSO.FolderExists(xlPath) Then objFSO.CreateFolder(xlPath)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
给wincc中通过vbs写excel的方式做报表的初学者一点脚本我对该帖子不做任何限制,都可以自由拷贝使用。
方便初学者学习!//log子程序,40个数据记录,总共记录一周时间,写入excel,放到wincc 全局脚本中一分钟运行一次//如果是要整点报表也简单,判断一下当前的系统时间,t的初始值根据当前时间定义。
//本程序主要是演示数据记录的过程。
//在c:\建立一个excel文件,该文件可以是你的报表模版Option ExplicitFunction actionDim objExcelApp,objExcelbook,objExcelSheetDim tagshijian,sheetname,username,zhushiDim tagdayDim a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21, a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36,a37,a38,a39,a40 Dim i,j,t,countDim msgDim patch,fnDim d,m,y,oh,mm,ssd=" "m="-"y="-"oh=":"mm=":"ss=""msg="记录报表成功"fn=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))patch="c:\"&fn&".xls"Set a1=HMIRuntime.Tags("a1")Set a2=HMIRuntime.Tags("a2")Set a3=HMIRuntime.Tags("a3")Set a4=HMIRuntime.Tags("a4")Set a5=HMIRuntime.Tags("a5")Set a6=HMIRuntime.Tags("a6")Set a7=HMIRuntime.Tags("a7")Set a8=HMIRuntime.Tags("a8")Set a9=HMIRuntime.Tags("a9")Set a10=HMIRuntime.Tags("a10")Set a11=HMIRuntime.Tags("a11")Set a12=HMIRuntime.Tags("a12")Set a13=HMIRuntime.Tags("a13")Set a14=HMIRuntime.Tags("a14")Set a15=HMIRuntime.Tags("a15")Set a16=HMIRuntime.Tags("a16")Set a17=HMIRuntime.Tags("a17")Set a18=HMIRuntime.Tags("a18")Set a19=HMIRuntime.Tags("a19")Set a20=HMIRuntime.Tags("a20")Set a21=HMIRuntime.Tags("a21")Set a22=HMIRuntime.Tags("a22")Set a23=HMIRuntime.Tags("a23")Set a24=HMIRuntime.Tags("a24")Set a25=HMIRuntime.Tags("a25")Set a26=HMIRuntime.Tags("a26")Set a27=HMIRuntime.Tags("a27")Set a28=HMIRuntime.Tags("a28")Set a29=HMIRuntime.Tags("a29")Set a30=HMIRuntime.Tags("a30")Set a31=HMIRuntime.Tags("a31")Set a32=HMIRuntime.Tags("a32")Set a33=HMIRuntime.Tags("a33")Set a34=HMIRuntime.Tags("a34")Set a35=HMIRuntime.Tags("a35")Set a36=HMIRuntime.Tags("a36")Set a37=HMIRuntime.Tags("a37")Set a38=HMIRuntime.Tags("a38")Set a39=HMIRuntime.Tags("a39")Set a40=HMIRuntime.Tags("a40")Set count=HMIRuntime.Tags("count")sheetname="Sheet1"tagshijian=NowSet objExcelApp=CreateObject("Excel.Application") objExcelApp.visible=FalseobjExcelApp.workbooks.open "C:\Table.xls"objExcelApp.worksheets(sheetname).activatecount.Readt=count.Value +1If t<4 Thencount.Write 4t=4Elsecount.Write tEnd IfIf t>10080 Thencount.Write 3t=4End IfFor t=t To tWith objExcelApp.worksheets(sheetname).cells(t,1).value=tagshijiana1.Read.cells(t,2).value=a1.Valuea2.Read.cells(t,3).value=a2.Valuea3.Read.cells(t,4).value=a3.Valuea4.Read.cells(t,5).value=a4.Valuea5.Read.cells(t,6).value=a5.Valuea6.Read.cells(t,7).value=a6.Valuea7.Read.cells(t,8).value=a7.Valuea8.Read.cells(t,9).value=a8.Valuea9.Read.cells(t,10).value=a9.Valuea10.Read.cells(t,11).value=a10.Valuea11.Read.cells(t,12).value=a11.Valuea12.Read.cells(t,13).value=a12.Valuea13.Read.cells(t,14).value=a13.Valuea14.Read.cells(t,15).value=a14.Valuea15.Read.cells(t,16).value=a15.Valuea16.Read.cells(t,17).value=a16.Valuea17.Read.cells(t,18).value=a17.Valuea18.Read.cells(t,19).value=a18.Valuea19.Read.cells(t,20).value=a19.Valuea20.Read.cells(t,21).value=a20.Value a21.Read.cells(t,22).value=a21.Value a22.Read.cells(t,23).value=a22.Value a23.Read.cells(t,24).value=a23.Value a24.Read.cells(t,25).value=a24.Value a25.Read.cells(t,26).value=a25.Value a26.Read.cells(t,27).value=a26.Value a27.Read.cells(t,28).value=a27.Value a28.Read.cells(t,29).value=a28.Value a29.Read.cells(t,30).value=a29.Value a30.Read.cells(t,31).value=a30.Value a31.Read.cells(t,32).value=a31.Value a32.Read.cells(t,33).value=a32.Value a33.Read.cells(t,34).value=a33.Value a34.Read.cells(t,35).value=a34.Value a35.Read.cells(t,36).value=a35.Value a36.Read.cells(t,37).value=a36.Value a37.Read.cells(t,38).value=a37.Value a38.Read.cells(t,39).value=a38.Value a39.Read.cells(t,40).value=a39.Value a40.Read.cells(t,41).value=a40.ValueEnd WithNextobjExcelApp.ActiveWorkbook.SaveobjExcelApp.ActiveWorkbook.closeobjExcelApp.ActiveWorkbook.QuitSet objExcelApp=NothingEnd Function//SAVE子程序//保存文件//读出系统时间,把文件保存为以日期为文件名的文件//每周日的23:59:10执行一次Option ExplicitFunction actionDim objExcelApp,objExcelbook,objExcelSheetDim sheetname,usernameDim tagdayDim i,j,tDim msgDim patch,fnfn=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))+CStr(Hour(Now))&CStr(Minute (Now))patch="c:\"&fn&".xls"sheetname="Sheet1"Set objExcelApp=CreateObject("Excel.Application")objExcelApp.visible=FalseobjExcelApp.workbooks.open "C:\Table.xls"objExcelApp.worksheets(sheetname).activateobjExcelApp.ActiveWorkbook.SaveAs patchobjExcelApp.ActiveWorkbook.SaveobjExcelApp.ActiveWorkbook.closeobjExcelApp.ActiveWorkbook.QuitSet objExcelApp=NothingEnd Function//delete子程序//删除模版,拷贝空白模版到当前目录//有人会问,为什么不用vb清空当前已经记录数据的模版文件//问的好,如果这个模版里面已经存了几万条数据了呢?//所以最快的方法是用vc脚本,将当前模版删除,拷贝一个空的模版到c://每周日的23:59:30执行一次#include "apdefap.h"int gscAction( void ){#pragma option(mbcs)// WINCC:TAGNAME_SECTION_START// syntax: #define TagNameInAction "DMTagName"// next TagID : 1// WINCC:TAGNAME_SECTION_END#pragma code("kernel32.dll")long CopyFileA(LPCTSTR,LPCTSTR,long);long DeleteFileA(LPCTSTR);#pragma code()DeleteFileA("C:\\Table.xls");CopyFileA("C:\\bak\\Table.xls","C:\\Table.xls",TRUE);// WINCC:PICNAME_SECTION_START// syntax: #define PicNameInAction "PictureName"// next PicID : 1// WINCC:PICNAME_SECTION_ENDreturn 0;}。