搬家第一天-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數據表了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM