在InTouch中如何使用excel做报表在InTouch中有很多做报表的方法,本文介绍在InTouch中如何使用excel来做报表。首先在WonderwareInTouch中使用历史数据导出工具histdata,将WonderwareInTouch生成的历史数据导出到文本文件excel中。然后您可以在excel中通过函数对这些数据进行处理生成您需要的数据,如流量、压力、液位等。再通过intouch提供的DDE协议将excel中的数据在intouch中您制作的那个表格里显示出来。以下是用histdata将intouch历史数据导出到excel中的一些步骤:1、在WonderwareInTouch中配置访问名2、使用INTOUCH向导,打开向导的“趋势”组。选择histdata向导,粘贴到窗口。双击给其指定一个“历史趋势”型标记名。3、使用histdata向导时,会自动创建histdata标记名。进入标记名字典可以看到一些以HDW开头的io型标记名,如HDWDataDir。WonderwareInTouch自动生成需要的标记名,这些标记名说明如下:HDWDATADIR消息型历史数据文件的目录的路径名例如HDWDataDir=HTGetLogDirectory();HDWDBDIR消息型InTouch标记名字典的目录的路径名例如HDWDBDir=InfoInTouchAppDir();HDWSTARTDATE消息型与$DateString相同格式的数据采样开始日期HDWSTARTTIME消息型使用24小时时钟的HH:MM:SS格式的数据采样开始时间HDWDURATION消息型数据时间长度(报表时间总长度),可以用星期,天时,分,秒,等来表示下面是有效的字符:w星期,d天,h小时,m分,s秒。允许使用小数值例如.5s表示500毫秒,若只需一个样本请将DURATION设为0零HDWINTERVAL消息型采样间隔的时间长度,可以用星期日小时分和秒来表示例如1W表示一星期允许使用小数值例如用.25d来表示6小时,有效字符与HDDURATION相同,注意DURATION和INTERVAL允许的最大时间长度均为6周,这适用于所有请求类型日、秒等,例如如果使用日则最大值为42,7天x6周=42HDWTAGS消息型历史数据的标记名列表(报表中需要的标记名),以TagA,TagB,……TagZ格式输入,此外采样日期和或时间可以通过使用内部系统标记名$Date和$Time来请求,例如$Date,TagA,TagB或$Time,TagA,TagB或$Date,$Time,TagA,TagBHDWTAGS1,TAGS2,....消息型HDWTAGS字符串在WindowViewer中的长度可以为131个字符在Excel中的长度可以为255个字符字符串,可以通过迭加标记名项目Tags1Tags2等来延长以适应更长字符串的要求,如果标记名需附加额外的标记名文本请在字符串末输入一个加号(+)例如,TAGS=$Date,ProdLevel,ProdTemp,+TAGS1=ReactLevel,Temp,GasLevel,+TAGS2=MotorStatus注意不允许使用重复标记名,每个标记字符串的最大长度为512字节HDWFILENAME消息型规定生成的.CSV文件的路径和名称,例如,D:\report.csvHDWWRITEFILE整型当设置为1时HistData会将请求数据写入由FILENAME项目名指定的文件,当文件更新完成后WRITEFILE会自动重置为0零STATUS离散型显示最后一次操作的状态1表示成功,0零表示出错ERROR消息型包含上次错误说明的字符串,如STATUS为1则显示无,如STATUS为0零则显示错误消息字符串前9个TAG规定数据的内容,HDWWRITEFILE=1是写.CSV文件的命令,最后两个用于检查错误。例如:在intouch的脚本QuickFunctions中生成一个日期由datestr规定,包括三个标记名“SDA001MD_AI,SDA001MP_AI,SDA001MN_AI”的日班报表。复制、修改一下就可以形成所需的报表。QuickFunctions中脚本名称“ReportGenerate”HDWDBDir=InfoInTouchAppDir();HDWDataDir=D:\Hisdata;HDWStartDate=datestr;HDWStartTime=00:00:00;HDWDuration=23h;HDWFilename=D:\report.csv;HDWTags=$date,$time,SDA001MD_AI,SDA001MP_AI,+;HDWTags1=SDA001MN_AI,+;HDWInterval=1h;HDWWriteFile=1;HDWWriteFile=HDWWriteFile;上面Tag中,有些项需要在生成.CSV文件之前赋值,其它项一般在设计时已确定。4、然后可以在intouch中建立这样一个窗口;您可以在这里设置以下信息:a、报表文件#:HDWFilename;b、历史数据库文件所在路径#:HDWDataDir;c、选定报表的日期#:datestr;d、错误信息#:HDWError,可以提示您操作是否成功;e、正在写入文件:“HDWWriteFile==1ORreportstatus==1”,状态条红色,正在写入,状态条绿色,写入完成;f、历史数据库状态:HDWStatus==1,状态条绿色,历史数据库状态正常,状态条红色,历史数据库状态不正常;g、“生成报表”按钮的脚本:IFHDWStatus==1THENIFHDWWriteFile==0THENstryear=StringMid(datestr,3,2);strmonth_temp=StringMid(datestr,6,2);strmonth_temp1=StringMid(strmonth_temp,2,1);IFStringTest(strmonth_temp1,2)==1THENstrmonth=strmonth_temp;ELSEstrmonth=0+StringMid(datestr,6,1);ENDIF;strday_temp=StringRight(datestr,2);strday_temp1=StringLeft(strday_temp,1);IFStringTest(strday_temp1,2)==1THENstrday=strday_temp;ELSEstrday=0+StringRight(datestr,1);ENDIF;histfilename=d:\Hisdata\+stryear+strmonth+strday+00.lgh;IFInfoFile(histfilename,1,1)==1THENCALLReportGenerate();reportstatus=1;{StartAppD:\report\GF.exe;}ELSECY_MESSAGEBOX=无当天历史记录,请选择其它日期!;Show错误提示;ENDIF;ELSECY_MESSAGEBOX=正在生成报表数据,不允许此操作!;Show错误提示;ENDIF;ELSECY_MESSAGEBOX=历史数据库状态不正常,请重新启动程序!;Show错误提示;ENDIF;h、“查看日报”按钮的脚本:IFInfoAppActive(InfoAppTitle(excel))==1THENActivateAppInfoAppTitle(excel);ELSEIFHDWWriteFile==0ANDreportstatus==0THENIFInfoAppActive(InfoAppTitle(cf))==1THENActivateAppInfoAppTitle(cf);ELSEStartAppD:\report\CF.exe;ENDIF;ELSECY_MESSAGEBOX=正在生成报表中,不允许查看!;Show错误提示;ENDIF;ENDIF;根据报表要求,用INTOUCH的附件HISTDATA软件形成一个有规定数据的.CSV文件(逗号分隔文件,可用EXCEL打开)。这个.CSV文件是英文的,不符合一般报表的要求,只能提供数据。所以需要另设计一个空的EXCEL报表,再将.CSV文件的数据复制到报表中,形成完整的报表。下面是INTOUCH形成的.CSV文件的例子在将数据导入到excel以后,您就可以在excel中进行您需要的处理。另外,您可以通过EXCEL的宏打印报表,可以完成手动打印和定时自动打印。如果有多个报表,需要形成多个.CSV文件和设计多个EXCEL报表。