基于VB和EXCEL的報表設計及打印
在現代管理信息系統的開(kāi)發(fā)中,經(jīng)常涉及到數據信息的分析、加工,
最終還需把統計結果形成各種形式的報表提供給領(lǐng)導決策參考,或進(jìn)行外
部交流。在Visual Basic中制作報表,通常是用數據環(huán)境設計器(Data
Environment Designer)與數據報表設計器(Data Report Designer),或者
使用第三方產(chǎn)品來(lái)完成。但對于大多數習慣于Excel報表的用戶(hù)而言,用以
上方法生成的報表在格式和功能等方面往往不能滿(mǎn)足他們的要求。
由于Excel具有自己的對象庫,在Visual Basic工程中可以加以引用,
通過(guò)對Excel使用OLE自動(dòng)化,可以創(chuàng )建一些外觀(guān)整潔的報表,然后打印輸
出。這樣實(shí)現了Visual Basi應用程序對Excel的控制。本文將針對一個(gè)具
體實(shí)例,闡述基于VB和EXCEL的報表設計及打印過(guò)程。
1)創(chuàng )建Excel對象
Excel對象模型包括了128個(gè)不同的對象,從矩形、文本框等簡(jiǎn)單的對
象到透視表,圖表等復雜的對象。下面簡(jiǎn)單介紹一下其中最重要,也是用
得最多的五個(gè)對象。
(1)Application對象
Application對象處于Excel對象層次結構的頂層,表示 Excel自身的
運行環(huán)境。
(2)Workbook對象
Workbook對象直接地處于A(yíng)pplication對象的下層,表示一個(gè)Excel工
作薄文件。
(3)Worksheet對象
Worksheet對象包含于Workbook對象,表示一個(gè)Excel工作表。
(4)Range對象
Range對象包含于Worksheet對象,表示 Excel工作表中的一個(gè)或多個(gè)
單元格。
(5)Cells對象
Cells對象包含于Worksheet對象,表示Excel工作表中的一個(gè)單元格。
如果要啟動(dòng)一個(gè)Excel,使用Workbook和Worksheet對象,下面的代碼
啟動(dòng)了Excel并創(chuàng )建了一個(gè)新的包含一個(gè)工作表的工作?。?nbsp;
Dim zsbexcel As Excel.Application
Set zsbexcel = New Excel.Application
zsbexcel.Visible = True
如要Excel不可見(jiàn),可使zsbexcel.Visible = False
zsbexcel.SheetsInNewWorkbook = 1
Set zsbworkbook = zsbexcel.Workbooks.Add
2)設置單元格和區域值
要設置一張工作表中每個(gè)單元格的值,可以使用Worksheet對象的
Range屬性或Cells屬性。
With zsbexcel.ActiveSheet
.Cells(1, 2).value = "100"
.Cells(2, 2).value = "200"
.Cells(3, 2).value = "=SUM(B1:B2)"
.Range("A3:A9") = "中國人民解放軍"
End With
要設置單元格或區域的字體、邊框,可以利用Range對象或Cells對象
的Borders屬性和Font屬性:
With objexcel.ActiveSheet.Range("A2:K9").Borders ‘邊框設置
.LineStyle = xlBorderLineStyleContinuous
.Weight = xlThin
.ColorIndex = 1
End With
With objexcel.ActiveSheet.Range("A3:K9").Font ‘字體設置
.Size = 14
.Bold = True
.Italic = True
.ColorIndex = 3
End With
通過(guò)對Excel單元格和區域值的各種設置的深入了解,可以創(chuàng )建各種復
雜、美觀(guān)、滿(mǎn)足需要的、具有自己特點(diǎn)的報表。
3)預覽及打印
生成所需要的工作表后,就可以對EXCEL發(fā)出預覽、打印指令了。
zsbexcel.ActiveSheet.PageSetup.Orientation = xlPortrait ‘
設置打印方向
zsbexcel.ActiveSheet.PageSetup.PaperSize = xlPaperA4 ‘
設置打印紙的打下
zsbexcel.Caption = "打印預覽" ‘設置預覽窗口的
標題
zsbexcel.ActiveSheet.PrintPreview ‘打印預覽
zsbexcel.ActiveSheet.PrintOut ‘打印輸出
通過(guò)打印方向、打印紙張大小的設置,不斷進(jìn)行預覽,直到滿(mǎn)意為止,
最終進(jìn)行打印輸出。
為了在退出應用程序后EXCEL不提示用戶(hù)是否保存已修改的文件,需使
用如下語(yǔ)句:
zsbexcel.DisplayAlerts = False
zsbexcel.Quit ‘退出EXCEL
zsbexcel.DisplayAlerts = True
如此設計的報表打印是通過(guò) EXCEL程序來(lái)后臺實(shí)現的。對于使用者來(lái)
說(shuō),根本看不到具體過(guò)程,只看到一張張漂亮的報表輕易地被打印出來(lái)了。
4)具體實(shí)例
下面給出一個(gè)具體實(shí)例,它在window98、Visual Basic 6.0、
Microsoft Office97的環(huán)境下調試通過(guò)。
在VB中啟動(dòng)一個(gè)新的Standard EXE工程,在“工程”菜單的“引用”
選項下引用Excel Object Library;然后在Form中添加一個(gè)命令按鈕
cmdExcel;最后在窗體中輸入如下代碼:
Dim zsbexcel As Excel.Application
Private Sub cmdExcel_Click()
Set zsbexcel = New Excel.Application
zsbexcel.Visible = True
zsbexcel.SheetsInNewWorkbook = 1
Set zsbworkbook = zsbexcel.Workbooks.Add
With zsbexcel.ActiveSheet.Range("A2:C9").Borders ‘邊框設置
.LineStyle = xlBorderLineStyleContinuous
.Weight = xlThin
.ColorIndex = 1
End With
With zsbexcel.ActiveSheet.Range("A3:C9").Font ‘字體設置
.Size = 14
.Bold = True
.Italic = True
.ColorIndex = 3
End With
zsbexcel.ActiveSheet.Rows.HorizontalAlignment =
xlVAlignCenter ‘水平居中
zsbexcel.ActiveSheet.Rows.VerticalAlignment =
xlVAlignCenter ‘垂直居中
With zsbexcel.ActiveSheet
.Cells(1, 2).value = "100"
.Cells(2, 2).value = "200"
.Cells(3, 2).value = "=SUM(B1:B2)"
.Cells(1, 3).value = "中國人民解放軍"
.Range("A3:A9") = "50"
End With
zsbexcel.ActiveSheet.PageSetup.Orientation = xlPortrait ‘
xlLandscape
zsbexcel.ActiveSheet.PageSetup.PaperSize = xlPaperA4
zsbexcel.ActiveSheet.PrintOut
zsbexcel.DisplayAlerts = False
zsbexcel.Quit
zsbexcel.DisplayAlerts = True
Set zsbexcel = Nothing

