说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

基于VB和EXCEL的报表设计及打印

HTML文档下载 WORD文档下载 PDF文档下载
基于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

toggle()-JQuery API Javascript-JQuery API $.browser-JQuery API $.each(obj, fn)-JQuery API $.extend(target,prop1,propN)-JQuery API $.grep(array,fn,inv)-JQuery API $.map(array, fn)-JQuery API $.merge(first,second)-JQuery API $.trim(str)-JQuery API Ajax-JQuery API $.ajax(properties)-JQuery API $.ajaxSetup(settings)-JQuery API $.ajaxTimeout(time)-JQuery API $.get(url, params, callback)-JQuery API $.getIfModified(url, params, callback)-JQuery API $.getJSON(url, params, callback)-JQuery API $.getScript(url, callback)-JQuery API $.post(url, params, callback)-JQuery API ajaxComplete(callback)-JQuery API ajaxError(callback)-JQuery API ajaxSend(callback)-JQuery API ajaxStart(callback)-JQuery API ajaxStop(callback)-JQuery API ajaxSuccess(callback)-JQuery API load(url, params, callback)-JQuery API loadIfModified(url, params, callback)-JQuery API serialize()-JQuery API Accordion(settings)-JQuery API activate(index)-JQuery API button(hash)-JQuery API center()-JQuery API AntBrother(蚁哥) 请进 帮忙,如何屏闭TextBox控件的其它字符输入,只能输入数字!!!! 下的一段代码,在BCB怎是报错 大难题:在Win2000或者WinXP上安装Oracle7.3.3 ???? 一个很菜的问题:怎么查看所有的变量或属性值? 请问VB.NET如何获取IE收藏夹的位置? 迷惑不解,请教了 怎么用按钮来控制复选框的全部选中呀??? Excel中宏的问题!急 大难题:在Win2000或者WinXP上安装 Oracle7.3.3 ??? 关于窗口的大小和位置的问题 视图指针问题,高手帮忙!谢谢! 寻觅图象处理高手共同合作,欢迎朋友们去偶的站点申请免费主页空间 中秋佳节,兄弟们发Cash了吗 ? 寻觅图象处理高手共同合作,欢迎朋友们去偶的站点申请免费主页空间 寻觅图象处理高手共同合作,欢迎朋友们去偶的站点申请免费主页空间 用户控件 高手请进!!关于线程问题,本人在线等候!!! 如何禁止局域网中的MSN `×××怎样验证一个文本宽是否输入了汉字××× 为什么我的程序编译后跟没编译一样!大家救救我啊!急! JAVA发展趋势是什么? WEB服务器问题?????? 如何处理编码的问题 100分求助!关于多选框的问题!急啊!在线等!! 关于布局管理器的问题 recvfrom 的超时怎么不行呢? IIS不能访问asp文件,只能访问html文件,而且网页中的所有弹出类网页链接全都打不开(在线等) 在JSP里边怎么动态插入文件 设计物流系统应该考虑那些问题,实现那些功能,拜托 设计物流系统应该考虑那些问题,实现那些功能,拜托 php中的register_globals为off,怎么获得url中传递参数 设计物流系统应该考虑那些问题,实现那些功能,拜托 上海日記:震撼 这是为什么? 在JBuilder 下 如何单步debug SOAP 服务器端程序? 求助:手机短信是以什么编码发送的呢?UTF还是普通的GB2312? 另外移动和联通用的编码一样么? 急求《c#高级编程》2nd 英文版! windows 2003 下我的p4x266e 板载声卡驱动好了,但是没有声音,怎么解决? SOS:菜鸟问题! 如何来判断字段类型????初级问题..... 求助:请问vbscript什么函数可以让一个单精度的数保留两位小数 wps2000加密文件问题 程序员调查 C/S下如何访问ODBC数据库,客户端不配置任何东西。 大家有何看法???????????? 程序在系统启动时起动,如何做? 局域網計算機間訪問問題﹐進來看看﹗﹗ 为什么我向数据库插入数字时总是出错? 做网页是用切片好做还是用表格好? ftp代码,求救 某次竞赛共10道题,每做一题得十分,做错或不做倒扣4分,小华共得86分.他做对了几道题? 读作怎么读?60700703读作 怎么读作这个数 137053687500怎么读作 用大刀阔斧造句 大刀阔斧 造句大刀阔斧 造句韬光养晦 造句 8400301读作什么(该怎么读) 解关于x的不等式(x-1)(x-a)>0 解关于x的不等式x-(a+1) x+a>0 解关于x的不等式:x+1/x>a+1/a(a 为什么有些人缺乏方向感? 日本核监督委员会敦促东电“大刀阔斧”澳媒称澳政府拟摒弃前任政府对亚洲战略韩总统好感度调查出炉 卢武铉居首李明美国纽约家长望子成龙 为家中婴儿请家外媒:以色列空袭加沙地带 未造成人员加拿大婚外情网站欲进驻新加坡 遭民众日本一杂志启用胖模特 专为胖女孩设计以色列耄耋作家展望巴以和平并存 遭官苏富比将在墨尔本拍卖一件清朝蓝色丝绸澳媒称澳政府拟摒弃前任政府对亚洲战略法国总理将赴俄罗斯会见俄总理 讨论核禁令难治窃听偷拍器材售卖洪丰仓书法作品巡展明天在河南博物院开军事会议上的争论郑州市中心医院成为台商医疗保健定点医四川走廊医生兰越峰被解聘周口市中福在线“拍”出 25万大奖程虹“听课”没有纯正血统,不是顶级豪宅公布领导分工布置工作重点真敬业!四楼悬空平台上坐个六旬老太太漯河消防穿越神雕之我是杨过官场预言家穿越暗黑世界之军神神仙一族重生之DOTA全职业英雄极品风水师总裁异界行千奇百怪的死亡杨戬归来农民医生睥睨乾坤达祖湖湾旅游洼垮湖湾旅游恒山寺庙群旅游龙泉宝剑厂旅游金刀峡旅游浅水湾旅游跑马山旅游刘家桥旅游庐山龙湾温泉旅游东林大佛旅游贾登峪国家森林公园旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘