張 濤
(烏魯木齊鐵路局 客票管理所,烏魯木齊 830011)
PowerBuilder(簡稱PB)作為數據庫應用開發的前端開發工具,在以鐵路電子客票應用系統為代表的諸多應用系統開發中得到了廣泛應用。數據窗口(DataWindow)作為PB開發工具的核心技術,通過提供豐富的控件屬性和函數,控制數據窗口的顯示和數據的操縱,但對數據窗口的打印支持似乎過于簡單,尤其是對一些有特殊要求的打印控制, PB似乎顯得不夠完善。本文介紹PB數據窗口與Excel結合實現靈活打印報表的一種方法。
在一些應用中,尤其是在鐵路站段有關臺帳的應用中,需要對生產、管理過程中產生的數據進行匯總,形成日、月、季、年等相關的臺帳記錄,并打印成冊。利用打印數據窗口的方法實現顯得很不方便,因此,采用PB向Excel表單中傳輸數據,利用Excel的打印功能實現打印輸出,既能方便用戶使用,同時還可以將臺帳保存成Excel表單,方便用戶查詢和資料保存歸檔。
實現步驟如下:
(1)定義變量
OLEobject myApp,mysub
(2)創建OLE對象
myApp=Create OLEObject
ret=myApp.ConnectToNewObject("Excel.Sheet")
if ret<0 then
messagebox("連接Excel程序失敗!",string(ret))
return
end if
(3)連接Excel,并檢驗返回值
myApp.Application.Workbooks.Open("C:ztzztz_mb0.xls")
//打開一個特定的Excel文件
myApp.Application.Visible=false
//使該Excel文件可視
(4)確定工作薄,同時工作薄中相應的單元格中寫入數據
mysub=myApp.Application.ActiveWorkbook.Worksheets[1]
//確定第1個工作薄,同時向第1個工作薄中相應的單元格中寫入數據
mysub.cells[5,2] = "測試數據1"
mysub.cells[6,2] = "測試數據2"
//確定第2個工作薄,從數據窗口中讀入數據,循環寫入Excel工作薄中相應的單元格
mysub=myApp.Application.ActiveWorkbook.Worksheets[2]
for r=1 to 5
mysub.cells[r+3,1] = dw_1.getitemstring(r,6)
mysub.cells[r+3,6] = dw_1.getitemstring(r,7)
next
(5)斷開連接
myApp.Application.Visible=true
myApp.DisConnectObject()
Destroy myApp
至此,完成了PB向Excel表單中傳輸數據,用戶可在Excel中操縱數據了。
注意:用戶可先定制特定的Excel表單,并設定好表單單元格的屬性,如字體大小、顏色、排列方式等,完成數據的傳輸后,在Excel中自動按設定好的屬性進行顯示;此外,要將程序打開的Excel文件另存,以免破壞了模版文件,對下一次數據傳輸造成麻煩。
PB數據窗口與Excel結合,通過定制特定的Excel表單,就可以實現對特殊要求的報表打印。本文提供的示例在烏魯木齊鐵路局的站段班組管理臺帳軟件系統中得到了較好的應用。
[1] 柯建勛. PowerBuilder 9.0進階開發篇[M] . 北京:清華大學出版社,2003.