最新wincc生成excel

合集下载

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变量归档数据

如何在Excel中访问WinCC变量归档数据编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(如何在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嵌入式EXCEL报表系统使用手册

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”文件夹下。

在Excel中访问WinCC变量归档数据

在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”,可以使用多个名称。

wicc 写EXCEL 表格

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 文件

在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 倒后,每个月班的出勤日是不一样的,这样对于月报来说,计算出本月每个班的出勤日是需要些算法的。

WINCC通过工业数据桥将数据记录导出到Excel

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文件即可。

如何通过 VBS 操作 WINCC 在线数据控件并导出至 EXCEL(附带程序)

如何通过 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的历史数据写入Excel文件最近,几个客户提到了一个共性的需求:定期将WinCC的历史归档数据导出到Excel文件中,供第三应用去访问。

实现这个需求的方法很多,如:1)通过IDB(Industrial Databridge工业数据桥选件), 通过简单的组态就能实现,操作视频链接:/xxym.aspx?id=124622)手动点击画面中的表格或趋势控件上的导出按钮,将数据导出;或通过定期(如每小时)执行全局脚本控制表格或趋势控件上的导出按钮导出数据。

核心VBS代码如下:TableControl1.Online = 0 '设置表格控件停止实时更新TableControl1.TimeColumnRangeType=1'设置表格控件时间范围为“开始到结束”TableControl1.TimeColumnBeginTime=XXX'设置表格控件的开始时间TableControl1.TimeColumnEndTime=YYY'设置表格控件的结束时间TableControl1.ExportShowDialog=False'取消表格控件导出时弹出对话框TableControl1.ExportDirectoryname=BBB'设置导出的目录TableControl1.ExportFilename=AAA'设置导出的文件名TableControl1.Export()'执行表格控件的导出动作注意:此种方式,控件所在画面要为当前运行画面或用全局脚本将其置为当前画面,否则全局脚本无法操作此控件。

3)通过脚本调用WinCC OLE DB接口直接读取历史数据,写入到Excel文件中----------------------------------------------这里重点介绍第3)种:VBS访问WinCC OLE DB接口读取历史数据,写入Excel(Connectivitypack连通包提供此接口)这种方式核心代码包括A和B这2部分A. 调用WinCC OLE DB接口读取历史数据核心代码及注解:A1. 查询归档数据scon='Provider=WinCCOLEDBProvider.1;Catalog=CC_test03 _20_06_12_17_50_01R;Data Source=.\WinCC''建立到归档数据库的连接字符串'Catalog为WinCC数据库的名称(内部系统变量@DatasourceNameRT的值),Data Source为服务器名称,本地用“.\WinCC”即可。

WinCC Professional V15 VBS脚本读取变量记录到EXCEL

WinCC Professional V15 VBS脚本读取变量记录到EXCEL

WinCC Professional V15 VBS脚本读取变量记录到EXCEL本文介绍如何在WinCC Protal 环境中使用VBS脚本读取变量记录,并把数据保存成新的Excel文件。

文中示例代码仅适用于本地服务器绝对时间间隔方式访问。

软件环境:Windows Server 2016 ,WinCC Protal Professional V15,Microsoft office Excel 2010组态步骤:1. 创建WinCC Professional项目,创建变量2.组态变量记录3.新建画面并定义为启始画面,画面中拖放4个IO域(分别关联“归档变量,起始时间,结束时间,步长”),一个查询按钮和一个表格视图。

表格输入属性设置4.在C盘根目录下创建Project文件夹,Project下创建名为abc的Excel文档。

5.添加VB脚本GetLocalDate和VBRead 在SQL数据库中归档时间为UTC时间,与北京东八区差8小时,GetLocalDate用于时区修正,用于时间修正显示。

VBRead用于数据库的连接查询及Excel的数据填充。

GetLocalDate 填入下面代码完整代码:VBRead添加以下代码,图中代码没有全部截图,完整代码请参考随后的图片。

完整代码:6.选中画面中读取变量归档按钮,在单击事件中调用VBRead函数。

7.双击运行系统设置,勾选变量记录运行系统8.启动仿真WinCC Protal 项目。

9.给定归档变量值,输入查询时间及步长(时间格式yyyy/mm/dd hh:mm:ss),点击查询按钮。

打开C:\Project\下生产的Excel文件查看数据。

21.Wincc控件制作报表以及导出EXCEL方法介绍

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脚本中的函数不做解释。

wincc6 实时向excel传送数据 并保存以当天日期为名

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读取报警记录数据到EXCEL

【WinCC使用VBS读取报警记录数据到EXCEL1、概述介绍如何在WinCC项目中使用VBS脚本读取报警记录归档数据,并把获取的数据保存成新的Excel 文件。

2、软件环境WindowsXPSP3中文版、WinCC7.0SP2ASIA、Microsoft office Excel 20073、访问原理WinCC报警记录数据是以压缩的形式存储在数据库中,需要通过WinCC连通性软件包提供的OLE-DB接口才能够解压并读取这些数据。

当使用OLE-DB方式访问数据库时关键需要注意连接字符串的写法和查询语句的格式。

连接字符串格式为“ Provider=WinCCOLEDBProvider.1; Catalog二***; Data Source二***; ”,其中:Catalog 为WinCC运行数据库的名称,当修改项目名称或在其它计算机上打开原项目时, Catalog 会发生变化。

建议使用WinCC内部变量“ @DatasourceNameRT获得当前项目的Catalog 。

Data Source 为服务器名称,格式为“ <计算机名称>\Wi nCC”。

3.1 查询语句格式查询语句的格式要求如下:AIARMVIEW:SELECT * FROM [ WHERE-optio nal ]其中参数信息如下所示:ViewName数据库表名。

必须用需要的语言指定该表。

比如:中文字符表名为:ALGVIEWCHT英文字符表明为:ALGVIEWENU 等。

Condition :为过滤标准。

详细说明请参见下表:3 . 2查询结果表1查询参数表查询结果作为记录集返回。

可以根据需要有选择的返回特定的数据集。

例如:oRs.Fields(0).Value 返回的是消息的编号;oRs.Fields (2).Value 返回的是消息的时间戳;oRs.Fields(37).Value 返回的是消息文本的内容。

记录集的结构如下表所示:表2记录集结构表2记录集结构表3记录集结构(续表)注意:WinCC勺归档数据是使用UTC(协调世界时)时间保存的。

wincc与access形成EXCEL报表的实现(自己写的)

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 通过excel生成 日报表 月报表

wincc 通过excel生成 日报表 月报表

wincc 通过excel生成日报表月报表
请教:怎样把wincc的归档变量存储到excel中,而且每天生成一个日报表,每月生成一个月报表
问题补充:
请教范范老师,因为我对vb实在是不熟悉,还得请教两个问题:1.这个脚本是不是编在vb的全局脚本里面,2.你说到的执行时间,我不知道要怎么控制这个时间,3.我把变量导入到excel里的是瞬时值还是平均值,因为我想在excel 里显示一个小时的平均值,需要怎么做呢
最佳答案
要做这个需要有一定的VB功底,你可以抄一抄别人的程序,然后运行试验试验,最后把程序变成自己的,这样最快最容易达到目的。

下面是我写的一段日报表,已经投入项目使用。

需要注意的是脚本执行的时间要控制好。

因为字数限制发的是图片版的,还需要敲一下程序。

图片说明:1,程序2,程序23,程序3
标签。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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。

相关文档
最新文档