搬家第一天-26.Wincc V7.3 利用Office Web Component 做报表
作者:互联网
前一次的博客描述了如何利用Microsoft Hierarchical FlexGrid Control V6.0做报表,这个控件生成的报表表头排版不完美,今天我们换一个控件Office Web Component(简称OWC)来生成报表,这种报表可以在WINCC页面做表头排版,简洁美观。
一. 准备工作
1. 数据库准备
假设后台Sql Server已经有了数据库和相应表格,如何往数据库写入数据前次博客已经描述,这里不再介绍。假设数据表是这个样子。
2. OWC安装
OWC控件默认不在WINCC安装包内,需要单独安装,在office2003安装包内搜索OWC就可以找到安装程序,office2007及其以上版本找不到这个组件,需要注意。安装完成后,打开wincc项目管理器的页面编辑,右边的Activex组件“添加/删除”,勾选“Microsoft Office SPreadsheet 11.0 ”,拖放到Wincc页面,名称修改为OWC。
二. 脚本
1. 读取数据表在OWC显示
Sub OnClick(ByVal Item)
Dim owc
Dim PCName
Dim scon,ssql,conn,ors,ocom
Dim rscount
Dim InsertRowCount,i
Set owc=ScreenItems("SPReadSheet")
'以下代码首先计算记录数
PCName=HMIRuntime.Tags("@LocalMachineName").Read
scon="Provider = SQLOLEDB.1;Integrated Security=SSPI;Persist SecurityInfo=False;Initial Catalog =MyDB;Data Source = " &PCName & "\WINCC"
Set conn=CreateObject("ADODB.Connection")
ssql="select * from mytable"
conn.ConnectionString=scon
conn.Cursorlocation=3
conn.open
Set ors=CreateObject("ADODB.RecordSet")
Set ocom=CreateObject("ADODB.Command")
ocom.commandtype=1
Set ocom.ActiveConnection=conn
ocom.CommandText=ssql
Set ors=ocom.Execute
'定义表格的数据来源
owc.ActiveSheet.ConnectionString=scon
owc.ActiveSheet.CommandText =ssql
'插入若干行,行数由InsertRowCount定义,表头排版可能有好几行
InsertRowCount=1
rscount=InsertRowCount+1+ors.recordcount '判断最终表格有多少行,便于绘制表格线。本例有表头,有标题行。
For i=1 To InsertRowCount
owc.ActiveSheet.Rows("1:1").Insert
Next
'合并单元格,并写表头,字体大小,加粗。合并单元格和字段数有关,需要计算清楚
owc.ActiveSheet.Range("a1:g1").Merge
owc.ActiveSheet.Cells(1,1)="***报表"
owc.ActiveSheet.Cells(1,1).Font.Size=20
owc.ActiveSheet.cells(1,1).Font.Bold=True
'加边框
owc.ActiveWorkbook.Sheets(1).Range("a2:g" & rscount).Borders(1).LineStyle=1
owc.ActiveWorkbook.Sheets(1).Range("a2:g" & rscount).Borders(2).LineStyle=1
owc.ActiveWorkbook.Sheets(1).Range("a2:g" & rscount).Borders(3).LineStyle=1
owc.ActiveWorkbook.Sheets(1).Range("a2:g" & rscount).Borders(4).LineStyle=1
'首行居中显示,-4108居中,-4152靠右,这两个数值和Excel里面VBA脚本不一样需要注意
owc.ActiveSheet.Cells(1,1).HorizontalAlignment =-4108
End Sub
2. 导出到xml文件,文件名可以做动态处理,比如关联当前日期时间
Sub OnClick(ByVal Item)
Dim owc
Set owc=ScreenItems("SPReadSheet")
owc.Export "c:\123.xml"
End Sub
经过上述处理,就可以读取SQL Server数据表了。
标签:InsertRowCount,Web,26,V7.3,ActiveSheet,OWC,Range,owc,表头 来源: https://www.cnblogs.com/fishingsriver/p/14345896.html