jd house:基于VB和EXCEL的报表设计及打印
来源:百度文库 编辑:中财网 时间:2024/04/28 23:51:11
基于VB和EXCEL的报表设计及打印 [ 日期:2006-03-29 ] [ 来自:本站原创 ]基于VB和EXCEL的报表设计及打印
在现代管理信息系统的开发中,经常涉及到数据信息的分析、加工,
最终还需把统计结果形成各种形式的报表提供给领导决策参考,或进行外
部交流。在Visual Basic中制作报表,通常是用数据环境设计器(Data
Environment Designer)与数据报表设计器(Data Report Designer),或者
使用第三方产品来完成。但对于大多数习惯于Excel报表的用户而言,用以
上方法生成的报表在格式和功能等方面往往不能满足他们的要求。
由于Excel具有自己的对象库,在Visual Basic工程中可以加以引用,
通过对Excel使用OLE自动化,可以创建一些外观整洁的报表,然后打印输
出。这样实现了Visual Basi应用程序对Excel的控制。本文将针对一个具
体实例,阐述基于VB和EXCEL的报表设计及打印过程。
1)创建Excel对象
Excel对象模型包括了128个不同的对象,从矩形、文本框等简单的对
象到透视表,图表等复杂的对象。下面简单介绍一下其中最重要,也是用
得最多的五个对象。
(1)Application对象
Application对象处于Excel对象层次结构的顶层,表示 Excel自身的
运行环境。
(2)Workbook对象
Workbook对象直接地处于Application对象的下层,表示一个Excel工
作薄文件。
(3)Worksheet对象
Worksheet对象包含于Workbook对象,表示一个Excel工作表。
(4)Range对象
Range对象包含于Worksheet对象,表示 Excel工作表中的一个或多个
单元格。
(5)Cells对象
Cells对象包含于Worksheet对象,表示Excel工作表中的一个单元格。
如果要启动一个Excel,使用Workbook和Worksheet对象,下面的代码
启动了Excel并创建了一个新的包含一个工作表的工作薄:
Dim zsbexcel As Excel.Application
Set zsbexcel = New Excel.Application
zsbexcel.Visible = True
如要Excel不可见,可使zsbexcel.Visible = False
zsbexcel.SheetsInNewWorkbook = 1
Set zsbworkbook = zsbexcel.Workbooks.Add
2)设置单元格和区域值
要设置一张工作表中每个单元格的值,可以使用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
通过对Excel单元格和区域值的各种设置的深入了解,可以创建各种复
杂、美观、满足需要的、具有自己特点的报表。
3)预览及打印
生成所需要的工作表后,就可以对EXCEL发出预览、打印指令了。
zsbexcel.ActiveSheet.PageSetup.Orientation = xlPortrait ‘
设置打印方向
zsbexcel.ActiveSheet.PageSetup.PaperSize = xlPaperA4 ‘
设置打印纸的打下
zsbexcel.Caption = "打印预览" ‘设置预览窗口的
标题
zsbexcel.ActiveSheet.PrintPreview ‘打印预览
zsbexcel.ActiveSheet.PrintOut ‘打印输出
通过打印方向、打印纸张大小的设置,不断进行预览,直到满意为止,
最终进行打印输出。
为了在退出应用程序后EXCEL不提示用户是否保存已修改的文件,需使
用如下语句:
zsbexcel.DisplayAlerts = False
zsbexcel.Quit ‘退出EXCEL
zsbexcel.DisplayAlerts = True
如此设计的报表打印是通过 EXCEL程序来后台实现的。对于使用者来
说,根本看不到具体过程,只看到一张张漂亮的报表轻易地被打印出来了。
4)具体实例
下面给出一个具体实例,它在window98、Visual Basic 6.0、
Microsoft Office97的环境下调试通过。
在VB中启动一个新的Standard EXE工程,在“工程”菜单的“引用”
选项下引用Excel Object Library;然后在Form中添加一个命令按钮
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
在现代管理信息系统的开发中,经常涉及到数据信息的分析、加工,
最终还需把统计结果形成各种形式的报表提供给领导决策参考,或进行外
部交流。在Visual Basic中制作报表,通常是用数据环境设计器(Data
Environment Designer)与数据报表设计器(Data Report Designer),或者
使用第三方产品来完成。但对于大多数习惯于Excel报表的用户而言,用以
上方法生成的报表在格式和功能等方面往往不能满足他们的要求。
由于Excel具有自己的对象库,在Visual Basic工程中可以加以引用,
通过对Excel使用OLE自动化,可以创建一些外观整洁的报表,然后打印输
出。这样实现了Visual Basi应用程序对Excel的控制。本文将针对一个具
体实例,阐述基于VB和EXCEL的报表设计及打印过程。
1)创建Excel对象
Excel对象模型包括了128个不同的对象,从矩形、文本框等简单的对
象到透视表,图表等复杂的对象。下面简单介绍一下其中最重要,也是用
得最多的五个对象。
(1)Application对象
Application对象处于Excel对象层次结构的顶层,表示 Excel自身的
运行环境。
(2)Workbook对象
Workbook对象直接地处于Application对象的下层,表示一个Excel工
作薄文件。
(3)Worksheet对象
Worksheet对象包含于Workbook对象,表示一个Excel工作表。
(4)Range对象
Range对象包含于Worksheet对象,表示 Excel工作表中的一个或多个
单元格。
(5)Cells对象
Cells对象包含于Worksheet对象,表示Excel工作表中的一个单元格。
如果要启动一个Excel,使用Workbook和Worksheet对象,下面的代码
启动了Excel并创建了一个新的包含一个工作表的工作薄:
Dim zsbexcel As Excel.Application
Set zsbexcel = New Excel.Application
zsbexcel.Visible = True
如要Excel不可见,可使zsbexcel.Visible = False
zsbexcel.SheetsInNewWorkbook = 1
Set zsbworkbook = zsbexcel.Workbooks.Add
2)设置单元格和区域值
要设置一张工作表中每个单元格的值,可以使用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
通过对Excel单元格和区域值的各种设置的深入了解,可以创建各种复
杂、美观、满足需要的、具有自己特点的报表。
3)预览及打印
生成所需要的工作表后,就可以对EXCEL发出预览、打印指令了。
zsbexcel.ActiveSheet.PageSetup.Orientation = xlPortrait ‘
设置打印方向
zsbexcel.ActiveSheet.PageSetup.PaperSize = xlPaperA4 ‘
设置打印纸的打下
zsbexcel.Caption = "打印预览" ‘设置预览窗口的
标题
zsbexcel.ActiveSheet.PrintPreview ‘打印预览
zsbexcel.ActiveSheet.PrintOut ‘打印输出
通过打印方向、打印纸张大小的设置,不断进行预览,直到满意为止,
最终进行打印输出。
为了在退出应用程序后EXCEL不提示用户是否保存已修改的文件,需使
用如下语句:
zsbexcel.DisplayAlerts = False
zsbexcel.Quit ‘退出EXCEL
zsbexcel.DisplayAlerts = True
如此设计的报表打印是通过 EXCEL程序来后台实现的。对于使用者来
说,根本看不到具体过程,只看到一张张漂亮的报表轻易地被打印出来了。
4)具体实例
下面给出一个具体实例,它在window98、Visual Basic 6.0、
Microsoft Office97的环境下调试通过。
在VB中启动一个新的Standard EXE工程,在“工程”菜单的“引用”
选项下引用Excel Object Library;然后在Form中添加一个命令按钮
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
vb报表打印设计
vb 报表设计
请问如何在EXCEL中实现报表的打印?
基于vb的人事管理系统的设计 恳请高手帮忙
关于VB中DataReport报表设计的问题
我用VB中的DATAREPORT报表工具设计的报表的问题?
CDMA系统基于RAKE接收机的研究及设计
【求助】基于BP神经网络自适应数字滤波器的设计及仿真
在vb中如何打印报表???????
VB的报表问题
求基于bs结构的灵活报表
报表程序的 设计
上下的一个用vb的毕业设计,打印部分出现报表宽度大于纸的宽度
在Excel中如何让打印出来的每份报表数据都自动求和
请问哪里可以下载用VB编写的学生档案管理系统,具有报表打印功能?非常感谢!
如何用VB实现在同一叶面打印多条记录的报表套打
精通Struts:基于MVC的JavaWeb设计与开发(孙卫琴)打印版
基于WEB的远程教学系统论文和设计
关于打印报表的问题
如何让VB自带的打印报表中的一些数据预览能看到打印不出来呢????急急急
用VB设计的程序如何控制打印规格??
求基于canny算子的边缘检测vb控件设计源码
vb哪位有用VB使用 Excel 控件的实例的做数据库报表的实例告诉我一下
激光打印机的打印语言有“基于主机的打印”和“SPL”两种方式,哪种更有优势?