WinCC 7.0 用戶歸檔+Listview控件 制作報表(三)


導出

??上一篇介紹了查詢的VBS腳本,導出到Excel的功能同樣也通過腳本來實現(xiàn),也需要連接數(shù)據(jù)缀去,查詢需要的數(shù)據(jù)。與查詢功能不同的是甸祭,導出功能是把數(shù)據(jù)寫入到Excel中缕碎,而不是顯示到ListView控件上。這里給“導出”按鈕的事件屬性——“鼠標動作”中添加VBS腳本池户。

1咏雌、查詢數(shù)據(jù)
??這部分和查詢的腳本一樣凡怎,連接數(shù)據(jù)庫,先比較日期赊抖,然后再通過查詢字符串進行查詢操作统倒。

'定義連接字符串
Dim sPro,sDsn,sSer,sCon
sPro = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=false;"
sDsn = "Initial Catalog=CC_test_17_12_18_11_29_28R;"
sSer = "Data Source=ADMIN-PC\WINCC"
sCon = sPro + sDsn + sSer

Dim date1,date2,D1,D2
Set D1=ScreenItems("DTP1")   'DTP1獲取的為系統(tǒng)短時間格式 "2017/12/28 10:00:00"
Set D2=ScreenItems("DTP2")
date1 = Split(D1.value," ",-1,1)
date2 = Split(D2.value," ",-1,1)
Dim dt1,dt2
dt1 = CStr(date1(0))&" "&"00:00:00"
dt2 = CStr(date2(0))&" "&"23:59:59"
 
'比較兩個日期得大小   
If DateDiff("d", CDate(D1.value), CDate(D2.value)) < 0 Then
   MsgBox "起始日期: "& date1(0) &"   大于  終止日期: "& date2(0), vbOKOnly + vbExclamation, "警告"
   Exit Sub
End If

'定義查詢命令,查找符合條件的信息氛雪,位于兩個日期之間的信息
Dim sSql
sSql = "select * from UA#test3 where act_time between '"& dt1 & "'" & "and '" & dt2 & "'"

'建立連接
Dim oRs,oCom,conn,m
Set conn = CreateObject("ADODB.Connection")
    conn.ConnectionString = sCon
    conn.CursorLocation = 3
    conn.Open

' 創(chuàng)建查詢的命令文本
Set oRs = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")
    oCom.CommandType = 1
Set oCom.ActiveConnection = conn
    oCom.CommandText = sSql
Set oRs = oCom.Execute
m = oRs.RecordCount    'm變量用于返回有效記錄的數(shù)目
'MsgBox "查詢結(jié)果: 共有"& m &"條記錄"

2房匆、調(diào)用Excel模板
??先編輯好Excel模板,可根據(jù)自己的報表需求來設(shè)計模板报亩,這里模板保存在"D:\export_cardinfo\excel模板(勿刪)"文件夾中浴鸿,命名為“mode.xls”.

Excel模板

'調(diào)用Excel的接口打開模板
Dim objExcelApp,sheetname
sheetname="Sheet1"
Set objExcelApp=CreateObject("Excel.Application") 
objExcelApp.Visible=FALSE
objExcelApp.Workbooks.Open"D:\export_cardinfo\excel模板(勿刪)\mode.xls"
objExcelApp.Worksheets(sheetname).Activate 

3、向Excel中填入數(shù)據(jù)
??通過Excel的接口打開模板后弦追,填入數(shù)據(jù)到Excel中岳链。

'填充數(shù)據(jù)到Excel中,
If (m > 0) Then
    objExcelApp.Worksheets(sheetname).cells(2,1).value="刷卡記錄編號"
    objExcelApp.Worksheets(sheetname).cells(2,2).value="刷卡時間"
    objExcelApp.Worksheets(sheetname).cells(2,3).value="車號"
    oRs.MoveFirst
    Dim i
    i=3
    Do While Not oRs.EOF '是否到記錄末尾劲件,循環(huán)填寫表格
        objExcelApp.Worksheets(sheetname).cells(i,1).value= CStr(oRs.Fields(0).Value)
        objExcelApp.Worksheets(sheetname).cells(i,2).value= CStr(oRs.Fields(3).Value)
        objExcelApp.Worksheets(sheetname).cells(i,3).value= CStr(oRs.Fields(4).Value)
        oRs.MoveNext
        i=i+1
    Loop
    oRs.Close
Else
    MsgBox "沒有所需數(shù)據(jù)……"
    item.Enabled = True
    Set oRs = Nothing
    conn.Close
    Set conn = Nothing
    objExcelApp.Workbooks.Close
    objExcelApp.Quit
    Set objExcelApp= Nothing
    Exit Sub
End If

4掸哑、斷開數(shù)據(jù)庫連接,保存數(shù)據(jù)到新的Excel文件
??完成寫入數(shù)據(jù)到Excel后寇仓,需要先斷開數(shù)據(jù)庫举户,然后保存到新的Excel文件中。

'斷開數(shù)據(jù)庫
Set oRs = Nothing
conn.Close
Set conn = Nothing

??生成新的Excel文件遍烦,自定義文件名“filename”和存儲路徑“path”俭嘁,這里文件名以保存時間、查詢時間范圍來命名服猪。

'生成新的Excel文件供填,并關(guān)閉Excel
Dim patch,filename,da1,da2,da3,da4
da1=Split(date1(0),"/",-1,1)
da2=Split(date2(0),"/",-1,1)
da3=CStr(da1(0))&CStr(da1(1))&CStr(da1(2))
da4=CStr(da2(0))&CStr(da2(1))&CStr(da2(2))
filename="1#機記錄"&CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))&CStr(Hour(Now))&CStr(Minute(Now))&CStr(Second(Now))&"_("& da3 &"-"& da4&")"
patch= "D:\export_cardinfo\"&filename&".xls"
objExcelApp.ActiveWorkbook.SaveAs patch
objExcelApp.Workbooks.Close   
objExcelApp.Quit 
MsgBox "刷卡記錄已導出到 D:\export_cardinfo 文件夾"

??這樣就完成了導出到Excel功能的腳本,同樣運行WinCC畫面看看實際效果罢猪。


導出到Excel
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末近她,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子膳帕,更是在濱河造成了極大的恐慌粘捎,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件危彩,死亡現(xiàn)場離奇詭異攒磨,居然都是意外死亡,警方通過查閱死者的電腦和手機汤徽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門娩缰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谒府,你說我怎么就攤上這事拼坎「√海” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵泰鸡,是天一觀的道長债蓝。 經(jīng)常有香客問我,道長盛龄,這世上最難降的妖魔是什么惦蚊? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮讯嫂,結(jié)果婚禮上蹦锋,老公的妹妹穿的比我還像新娘。我一直安慰自己欧芽,他們只是感情好莉掂,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著千扔,像睡著了一般憎妙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上曲楚,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天厘唾,我揣著相機與錄音,去河邊找鬼龙誊。 笑死抚垃,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的趟大。 我是一名探鬼主播鹤树,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼逊朽!你這毒婦竟也來了罕伯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤叽讳,失蹤者是張志新(化名)和其女友劉穎追他,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體岛蚤,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡邑狸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了灭美。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片推溃。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡昂利,死狀恐怖届腐,靈堂內(nèi)的尸體忽然破棺而出铁坎,到底是詐尸還是另有隱情,我是刑警寧澤犁苏,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布硬萍,位于F島的核電站,受9級特大地震影響围详,放射性物質(zhì)發(fā)生泄漏朴乖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一助赞、第九天 我趴在偏房一處隱蔽的房頂上張望买羞。 院中可真熱鬧,春花似錦雹食、人聲如沸畜普。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吃挑。三九已至,卻和暖如春街立,著一層夾襖步出監(jiān)牢的瞬間舶衬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工赎离, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逛犹,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓梁剔,卻偏偏與公主長得像圾浅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子憾朴,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容