在wincc 中怎么做才能把报表生成按日期的excel 文件

合集下载

西门子wincc数据报表的实现方式

西门子wincc数据报表的实现方式

西门子wincc数据报表的实现方式【摘要】随着工业领域的不断发展,用户需求一种以人机界面为控制主体的视窗控制体系的过程监控系统,以此来取代原来的以现场操作按钮和仪表为主的操作体系。

通过开放性、灵活性的可视化界面,迅速并直接的处理生产过程中的事件信息。

凭借这种战略思想,WINCC,运行于Windows系统下的控制中心,已发展成为工业市场领域的领导者,乃至业界遵循的标准。

Wincc集生产自动化和过程自动化于一体,应用于各种工业自动化领域,是提高工厂生产效率的上乘之选,并支持多种语言。

工业生产中,报表系统通常是控制系统中非常重要的一部分,是企业管理的基本措施和途径,它通常用来记录重要的现场工艺参数和统计信息。

早期,都是由人工记录的方式进行统计汇总,数据也只能有一种几乎只有记录员才能理解的表现形式,且这种形式难于更改。

当进入计算机时代后,报表这部分工作完全可以由计算机软件来实现,数据动态化,格式多样化,用户可以自己修改数据或格式。

针对自动化工程师而言,如何利用wincc软件来开发适合用户需求的报表,并且高效灵活的解决统计数据是自动化工程师必须掌握的一门技术,也是企业日常生产维护和管理中不可或缺的管理手段之一。

报表的变现形式分为许多种,大体上可分为两种形式:曲线格式和表格格式。

曲线形式主要是利用WINCC自带控件来实现,在控件属性中,可对趋势、常规、字体、趋势窗口、时间轴、数值轴、工具栏、状态栏、在线组态、导出中具体参数进行设置,以符合用户的生产需求和审美要求。

例如,时间轴可设成1分钟,1小时或者1天的形式,数值轴可以设置成根据实际测量值实时改变数值轴的范围。

应用在线趋势曲线的前提条件是,用户需要在变量记录里设置需要归档的变量内容和归档周期等一系列参数。

针对于一些特殊归档要求,曲线形式的归档可能满足不了用户的需求,往往用户需要生成一种支持打印功能并以表格形式查询的数据归档报表。

针对于这类复杂的报表,可以通过用户归档和Wincc报表编辑器来实现此类功能。

wincc报表时间列时间的设置

wincc报表时间列时间的设置

wincc报表时间列时间的设置
用wincc6.0做了一个报表,列表示每一个变量,行则表示时间,现在我想实现:1.数据间隔为2个小时记录一次;
2.只打印该天的数据(即从0点到24点的数据,12行)并且只打印改天的;
3.设置个时间段也可以,但是这个时间段的编程我不知道该怎么做,听说可以建两个变量来设置起始时间变量,不过我不太明白,这两个变量该设置成什么样的?
最佳答案
参考
深入浅出西门子WINCC6.0:
/SearchDatum.aspx?query=深入浅出&psort=&brand=&area=&industry=
使用用户归档实现报表:
/download/Upload/AS/applicati on/A0296.zip
WINCC数据报表实现方法:
/download/Upload/AS/applicati
on/A0300.pdf。

最新wincc生成excel

最新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。

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

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

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

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

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

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

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

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

wincc报表打印中选定时间范围

wincc报表打印中选定时间范围

wincc报表打印中选定时间范围
做wincc报表打印中选定时间范围,看到一篇文章里面有三个程序,后面贴了个图片!可是不知道怎么组态的!
图片说明:1,wincc报表打印中选定时间范围
最佳答案
1)首先新建两个文本8位字符集变量,begintime和endtime,用于存放起始时间和终止时间,然后新建12个文本8位字符集变量,分别是起始的年、月、日、时、分、秒,终止的年、月、日、时、分、秒,即图中的12个io域,输入完成时,用脚本将起始的年、月、日、时、分、秒和终止的年、月、日、时、分、秒拼成标准日期时间格式,如:2013-08-0911:16:00,然后将标准时间格式赋给begintime 和endtime;
2)新建页面布局,在页面布局中添加在线表格控件,双击控件,在连接选项卡中双击分配参数,组态要打印的归档变量,在“列”选项卡中取消选择时间的更新和时间范围,点击确定,然后双击动态参数,找到begintime,双击,选择之前创建的文本8位字符集变量begintime,找到endtime,双击,选择之前创建的文本8位字符集变量endtime,点击
确定;
3)新建打印作业,调用刚才新建的页面布局;
4)在画面上创建两个按钮,“打印预览”中调用函数:标准函数---report----rptjobpreview,“打印”中调用函数:标准函数---report----rptjobprint;。

(完整word版)在WinCC中如何使用VBS读取变量归档数据到EXCEL

(完整word版)在WinCC中如何使用VBS读取变量归档数据到EXCEL

(完整word版)在WinCC中如何使⽤VBS读取变量归档数据到EXCEL⽂档类型常问问题, 条⽬ID:77940055, ⽂档发布⽇期2013年7⽉23⽇4)(评估在WinCC中如何使⽤VBS读取变量归档数据到EXCEL推荐⽂档: 西门⼦⼯程师推荐本⽂档!1概述介绍如何在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 查询语句格式数据的查询语句的格式要求如下:8 字节长ValueID 的请求:TAG_LLVID:R,,,[,][,]4 字节长ValueID 的请求:TAG:R,ValueName>,,[,][,]其中:ValueID:过程值归档变量的唯⼀标识符。

ValueName:过程值归档变量的名称,格式为“ArchiveName\Value_Name”,可以使⽤多个名称。

WinCC设备运行数据-日报表

WinCC设备运行数据-日报表

WinCC设备运行数据-日报表
原创作者:张占领 - 西门子工业技术支持中心
在实际生产过程中,需要对机床,压机之类设备的启停时间、耗电量以及产品数量等运行数据进行统计,生成日报表,分析企业生产运营状况。

运行效果:
1. 通过下拉列表选择设备
2. 通过时间控件选择日期
3. 生成日报表
日报表中呈现的数据不是原始采集的直接数据,需要做简单计算,如运行时间,用电量。

实现方法简述:WinCC自动存储设备运行数据到第三方数据库(简单起见,这里采用Access数据库),然后通过脚本查询数据库,将数据填充到excel模板并另存为htm文件,再通过WinCC画面中的web控件加载此htm文件,呈现日报表。

实现上述功能的WinCC V7.5 SP1源程序链接:
https:///s/17PZ_lqrCwhyN9I2LccGqqA
详细的开发步骤,这里不详述。

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

在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完全可以实现。

关键就是如何存储数据。

方法一 WinCC 支持VBS 脚本,其实通过VBS 和VB本质是没有区别的,都是通过ADO 方式,存储数据格式化数据的存储。

WinCC的用户归档说白了就是WinCC提供的一个操作数据库表的工具。

我们可以通过用户归档,创建数据库表。

然后存储数据。

显示的话通过报表系统的连接外部ODBC数据库,通过 SQL 脚本格式化输出。

就ok了。

方法二这个报表的关键就在于如何确定班别和数据之间的关系。

四班三运转在连续生产的行业是很常见的。

首先确定班别和数据的对应关系。

在WinCC 归档的方式中有一种是通过事件触发的。

那么我们可以通过不同的用户登录来确定归档的启动或者停止,WinCC中对应一个变量可以生成几个归档变量,那么我们就能确定班次和数据的关系。

比如:一个变量A,在归档中我们可以建两个归档变量和它对应,一个是aa,一个是bb。

A班用户登录时启动aa的归档,停止bb 的归档;B班用户登录时启动bb 归档,停止aa 归档,依次类推。

至于得到数据的方法,可以使用WinCC 的标准归档查询实现。

数据的显示,通过WinCC 报表的变量直接连接显示。

觉得和VB相比,方法各有千秋。

但是这样就省去了多加一个应用程序了。

WinCC里面做复杂报表的方法。

WinCC 自带的报表编辑器确实功能有限,还好WinCC 本身功能是强大的,可以通过脚本来完成复杂报表功能。

目前我也是这么做的。

报表的思路如下:1、用excel我们也做一个符合自己实际需要报表(日报)的空白模板,我称它为Day_Report.xls; 相信各位大侠的excel表格都比我做的精美;我不懂关系数据库,但各位大侠肯定比我精通excel 各单元格之间的加、减、乘、除,甚至更加复杂的运算,并把运算结果放在你需要放置的单元格内,关系数据之间的运算,要在excel模板里面预先设置好。

我们要充分利用excel强大的数据处理能力~~~ 2、在WinCC 里面写一个全局脚本,在每天的00:00:01触发,执行复制Day_Report.xls并以此刻的年月日加载到模板文件名里面,将复制新生产的“Day_Report年月日.xls”存盘到你指定的目录。

这样当天的空白日报文件也就有了。

全局脚本代码如下:(本人测试通过,仅供参考) #include "apdefap.h"int gscAction( void ){#pragma code ("kernel32.dll")//调用动态链接库VOID GetLocalTime(LPSYSTEMTIME lpSystemTime); #pragma code ()#pragma code("Shell32.dll")//调用动态链接库VOID ShellExecuteA(HWND, LPCTSTR , LPCTSTR , LPCTSTR , LPCTSTR , INT);#pragma code()char FileName[30] = ""; char DateTime[30] = ""; SYSTEMTIME sysTime;__object* pExcel = NULL; //建立 pExcel 指针用来对 EXCEL 进行操作HWND handle=NULL;handle=FindWindow(NULL,"WinCC-运行系统 - ");GetLocalTime(&sysTime);sprintf(FileName,"d:\\Day_Report_%02d-%02d-%02d.xls",sysTime.wYear,sysTime.wMonth,sysTime.wDay);pExcel = __object_create("Excel.Application");pExcel->Visible = 0;//控制生成的excel 文件是否可见,当1 时,生成excel 文件时可见. pExcel->Workbooks ->Open ("d:\\Day_Report.XLS"); pExcel->ActiveWorkbook->SaveAs(FileName);//存盘//pExcel->ActiveWorkbook->PrintPreview();//可以预览//pExcel->ActiveWorkbook->PrintOut();//直接打印pExcel->Workbooks->Close();//关闭文件pExcel->Quit();//退出Excel__object_delete(pExcel);return 0;}3、再写一个全局脚本,整点触发,把你需要记录的变量写到“Day_Report年月日.xls”相应的单元格里面并存盘;这样就完成了报表的数据存储和打印。

也就是说,我们可以在电脑里面存放一份报表,并打印一份报表。

同样也实现了数据的存储。

相关脚本代码如下:(当时是以分钟来做测试的,仅供参考;注意此段代码缺少对其它excel进程的判断,在此脚本执行前,不要有其它excel应用~切记哦~~~呵呵。

)#include "apdefap.h"int gscAction( void ){int i;#pragma code ("kernel32.dll")//调用动态链接库VOID GetLocalTime(LPSYSTEMTIME lpSystemTime); #pragma code ()#pragma code("Shell32.dll")//调用动态链接库VOID ShellExecuteA(HWND, LPCTSTR , LPCTSTR , LPCTSTR , LPCTSTR , INT);#pragma code()char FileName[30] = "";SYSTEMTIME sysTime;__object* pExcel = NULL; //建立 pExcel 指针用来对 EXCEL 进行操作HWND handle=NULL;handle=FindWindow(NULL,"WinCC-运行系统 - ");GetLocalTime(&sysTime);//***********************************SetTagWord("Minute",sysTime.wMinute); i=GetTagWord("Minute")+3;if (i>26) { GetTagWord("Minute") ;} else if (i<=26){sprintf(FileName,"d:\\Day_Report_%02d-%02d-%02d.xls",sysTime.wYear,sysTime.wMonth,sysTime.wDay);pExcel = __object_create("Excel.Application"); pExcel->Visible =0;//控制生成的excel 文件是否可见,当1 时,生成excel文件时可见. pExcel->Workbooks ->Open (FileName); pExcel->Worksheets("sheet1")->Range("X1")->Value=GetTagChar("@ServerName");//Return-Type: char* 读取当前计算机名pExcel->Worksheets("sheet1")->Range("X2")->Value=GetTagChar("@CurrentUser");//Return-Type: char* 读取当前操作员pExcel->Worksheets("sheet1")->Cells(6,i)->Value=GetTagChar("TAG1"); pExcel->Worksheets("sheet1")->Cells(7,i)->Value=GetTagFloat("TAG2"); pExcel->Worksheets("sheet1")->Cells(8,i)->Value=GetTagFloat("TAG3"); pExcel->Worksheets("sheet1")->Cells(9,i)->Value=GetTagFloat("TAG4");pExcel->Worksheets("sheet1")->Cells(10, i)->Value=GetTagFloat("TAG5"); pExcel->Worksheets("sheet1")->Cells(11, i)->Value=GetTagFloat("TAG6"); pExcel->ActiveWorkbook->Save;//As(FileName);//存盘~//pExcel->ActiveWorkbook->PrintPreview();//可以预览//if (i>=27) { pExcel->ActiveWorkbook->PrintOut(); }//直接打印pExcel->Workbooks->Close();//关闭文件pExcel->Quit();//退出Excel__object_delete(pExcel);}return 0;}下面是赠送的励志散文欣赏,不需要的朋友下载后可以编辑删除~~上面才是您需要的正文。

相关文档
最新文档