VB中巧用Excel实现报表设计

来源 :考试周刊 | 被引量 : 0次 | 上传用户:ldjlovell
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要: 本文结合实例介绍了在VB中利用Excel实现复制报表的设计的方法,该方法把VB强大数据库管理与Excel灵活的报表设计有机结合起来,简化了编程,提高了程序的便利性。
  关键词: Visual Basic Excel 报表
  
  引言
  在数据库应用中,数据报表是非常重要的部分,Visual Basic中的数据报表器可以很方便地创建数据报表,但由数据报表器设计的表格样式单一,功能较少。微软公司的Excel软件想必大家都很熟悉,它那强大的报表设计功能和简单的操作界面,给大家留下了很深的印象。若能把VB中的数据输出至Excel格式的报表中,使得VB的数据库管理功能与Excel的报表设计功能结合起来,将大大方便普通用户的使用。本文借助一个实例详细介绍VB中如何利用Excel进行报表设计的方法。
  1.Excel对象
  借助Excel对象,可以很方便地在VB数据库程序中生成Excel报表。应用程序的最终用户在Excel环境中对报表做进一步的处理,如格式修改、打印预览、打印及保存等。
  Excel对象封装了Microsoft Excel的全部对象,我们主要使用其中的五种对象,详细介绍如下。
  Application对象:表示Excel应用对象,可以控制Excel应用程序的外观或功能[1],是访问Excel其他对象的切入点。
  Workbook对象:表示Excel中的工作簿,即对应一个Excel文件,可以实现对Excel工作簿的各种控制[1]。
  Worksheet对象:表示Excel中的工作表,可以实现对Excel工作表的各种控制[1]。
  Range对象:表示Excel中的区间,例如可以代表Excel中的某一单元格、某一行、某一列、某一选定区域[1]。
  Cells对象:表示Excel中的一个单元格[2],通过该对象读取Excel中的数据或将数据写入Excel中。
  2.操作步骤
  在VB中借助Excel生成报表,需完成如下工作:
  (1)在Excel中制作报表模板,设计报表标题、表头的样式,包括字体字号、边框等等。生成报表的过程实质上就是拷贝该模板并在新文件中填入具体的数据。
  (2)在VB中引用Excel对象[1]。首先在工程中选择“工程”→“引用”,并选择“Microsoft Excel 11.0 Object Library”。
  (3)在工程中使用New关键字声明Excel对象[1]。例如语句Dim n_xls As New Excel.Application声明了Excel对象n_xls。
  (4)使用Excel对象的属性和方法设计报表[1]。例如语句.Cells(1,1)=″常州技师学院″实现在A1单元格中写入数据。
  (5)保存文件,释放Excel对象。例如语句n_xls.Quit释放Excel对象。
  3.实例
  下面以常州技师学院招生系统中新生资料(分班)报表的设计为例,详细介绍VB中巧用Excel实现报表设计的过程。本实例生成新生资料总表和分表,可实现自动分页功能,所有数据一次打印,工作人员无需守候在打印机旁,分表中为一个班级新生资料,便于日后单个班级资料的打印工作。
  首先在Excel中制作如图一的模板文件“新生资料(分班).xls”,保存在专用文件夹data中。
  
  下面就以图一为例,说明在VB中是实何利用Excel实现报表设计的,窗体中的重点部分程序代码如下:
  Dim gzApp As New Excel.Application″声明Excel对象gzApp
  Dim gzWorkbook As New Excel.Workbook″声明工作簿对象gzWorkbook
  Dim gzWorkSheet As New Excel.Worksheet″声明工作表对象gzWorkSheet
  Dim range1 As Excel.Range″声明区间对象range1
  Dim fname As String″fname变量用来存放生成的文件名,包括年份及生成日期
  fname=″临时″& Trim(Str(Year(Date)))&″新生资料(分班)_″& Date
  ″拷贝模板文件得到新的报表文件
  FileCopy App.Path+″\data\新生资料(分班).xls″,App.Path+″\data\″& fname &″.xls″
  Set gzWorkbook=gzApp.Workbooks.Open(App.Path+″\data\″& fname &″.xls″,False,True)
  Dim i As Integer″新增各班级工作表,重命名为班级名称,班级名称在列表List2中
  Set gzWorkSheet=Sheets(1)
  For i=1 To List2.ListCount
  gzWorkSheet.Copy after:=Sheets(i)
  Next
  For i=0 To List2.ListCount-1
  Set gzWorkSheet=Sheets(i+2)
  gzWorkSheet.Select
  gzWorkSheet.Name=List2.List(i)
  Next
  ″存放班级总人数,在总表中起始位置及结束行数
  Dim bj_number(100)As Integer,bj_start(100)As Integer,bj_end(100)As Integer
  ″填写总表数据
  Set gzWorkSheet=Sheets(1)
  gzWorkSheet.Activate
  With gzWorkSheet
  ……
  ″实现自动分页,变量hs表示当前的行数
  hs_char=″A″& Trim(Str(hs+1))
  gzApp.ActiveSheet.Range(hs_char).Select
  gzWorkSheet.HPageBreaks.Add Before:=ActiveCell
  ″表头格式的复制及内容的填写
  gzApp.ActiveSheet.Range(Cells(1,1),Cells(3,8)).Copy_
  Destination:=.Range(Cells(hs+1,1),Cells(hs+3,8))
  .Cells(hs-2,1)=Trim(Str(Year(Date)))&″年常州技师学院新生资料(分班)表″
  .Cells(hs-1,2)=List2.List(k)
  .Cells(hs-1,6)=rs_temp″班级人数、男生人数和女生人数信息
  .Cells(hs-1,8)=″第″& bj_page_n &″页″
  ……
  ″数据行的格式复制
  gzApp.ActiveSheet.Range(Cells(4,1),Cells(4,8)).Copy_
  Destination:=.Range(Cells(hs,1),Cells(hs,8))
  hs_char=″A″&Trim(Str(hs))&″:H″& Trim(Str(hs))
  Set range1=gzApp.ActiveSheet.Range(hs_char)
  range1.ClearContents
  Set range1=Nothing
  ″写入数据
  .Cells(hs,1)=Trim(rs.Fields(″order_no″))
  .Cells(hs,2)=Trim(rs.Fields(″xm″))
  .Cells(hs,3)=Trim(rs.Fields(″xb″))
  .Cells(hs,4)=Trim(rs.Fields(″byxx″))
  .Cells(hs,5)=Trim(rs.Fields(″csny″))
  If(rs.Fields(″is_zs″))Then.Cells(hs,6)=“是”
  .Cells(hs,7)=Trim(rs.Fields(″lsr″))
  .Cells(hs,8)=Trim(rs.Fields(″addr″))
  ……
  End With
  Dim gzWorkSheet_n As Excel.Worksheet″从总表中拷贝数据至各分表
  Dim myrange1 As Range,myrange2 As Range
  For k=0 To List2.ListCount-1
  Set gzWorkSheet=Sheets(1)
  Set gzWorkSheet_n=Sheets(k+2)
  gzWorkSheet.Activate
  Set myrange1=gzApp.ActiveSheet.Range(Cells(bj_start(k),1),Cells(bj_end(k),8))
  myrange1.Copy
  gzWorkSheet_n.Activate
  myrange2.Activate
  myrange2.PasteSpecial
  Clipboard.Clear
  Next
  For k=0 To List2.ListCount-1″各分表分页,每页42行
  If bj_number(k)>42-3 Then
  Set gzWorkSheet_n=Sheets(k+2)
  gzWorkSheet_n.Activate
  For i=1 To(bj_end(k)-bj_start(k))\42
  hs_char=“A”& Trim(Str(42*i+1))
  gzApp.ActiveSheet.Range(hs_char).Select
  gzWorkSheet_n.HPageBreaks.Add Before:=ActiveCell
  Next
  End If
  Next
  ″删除临时文件,保存文件,释放Excel对象
  Kill App.Path+″\data\″& fname &″.xls″
  fname=Mid(fname,3)
  gzWorkbook.SaveAs App.Path+″\data\″ & fname &″.xls″
  gzWorkbook.Close:gzApp.Quit
  4.总结
  在VB中利用Excel实现报表设计,不仅减少了报表设计的工作量,还使生成的报表摆脱了以往简单死板的感觉,取而代之的是功能齐全、灵活多变的风格。这种方法既利用了Visual Basic强大的数据库管理功能,又利用了Excel灵活的报表设计功能,互相配合,取长补短。
  
  参考文献:
  [1]明日科技.Visual Basic开发技术大全.北京:人民邮电出版社,第1版.
  [2]刘丹丹,胡彩虹,张成才.基于Excel和数据库在VB中制作报表.气象与环境科学,2007,(8):90-93.
  [3]王瑾瑜,王晓利,恩和门德,杜伟.基于VB和Excel的报表设计及打印.内蒙古电大学刊,2006,(4):50-51.
  [4]陈军,李凌云.利用VB实现复杂数据报表的输出.烟台师范学院学报,2004,20,(1):27-30.
  [5]冯诗齐.用Excel生成VB应用软件的报表.电脑学习,2004,(3):52-54.
其他文献
一、引言    十七、十八世纪,欧洲正处于启蒙时期到大革命的敏感、躁动和震荡期,与之对应的是中国处于明清之际,虽有政权交替的些微阵痛,但占主导地位的是已经成熟的封建制度下的平静与保守,貌似无关的时代背景却决定了双方各自对于对方文化的取舍态度和取舍限度。事实上,这一时期从西方带来的一次不算成功的传教和近代科学对于思维已成定式的中国人的影响,远不及后者的文化之于前者的影响,在这两个世纪中,“东学西渐”
期刊
摘要: 演讲语篇具有其他语篇不具备的特征:独特的现实性、艺术性和鼓励性。美国就职演说在美国政治舞台上扮演着不可或缺的角色,演说词不仅具有磅礴激昂的气势,而且常常令人热血沸腾并为之感动。Halliday的功能语法提出了人际功能理论。本文对1961年约翰·F·肯尼迪的经典“就职演说”进行语篇分析,这个理论有助于探讨该演说振奋人心、团结民心的缘由。  关键词: 人际功能 系统功能语法 情态    1.引
期刊
摘要: 在过去的一个世纪里,有不少风云一时的作家被岁月湮没了,大雪无痕。而像张爱玲那样,从上世纪四十年代“十里洋场”骤然成名,到文坛将她“遗忘”三十余年,再到近年来的“张爱玲热”,高潮迭起,她在文坛的际遇如同她的第一部小说集标题一样,确实称得上“传奇”。她一生的孤独,赋予其作品人物的苍凉,给后人留下的是永恒的美。读她,心中有种落花般的寂寞,更有种暗香般的盈动。  关键词:作家 张爱玲 传奇 美  
期刊
摘要: 古筝艺术以它独有的不同于其他艺术所具有的方式表达出生活中人们的心绪、思想和感情,使艺术的运动和人的情感运动形成自然的对应,使音乐和人的感情产生共鸣。文章从文学性因素、不同风格作品、二度创作等方面分析了对古筝演奏中表情美的影响。  关键词: 古筝 表情美 情感    古筝,通过旋律、节奏、和声、音色、力度、速度等基本要素来表情,使听众从古筝的表情音调中真切感受到音乐所表达的内容、思想、意境。
期刊
摘要: 康妮是劳伦斯最后一部小说《查特莱夫人的情人》的女主人公,也是其笔下最成功的女性形象。她在人性、血性和柔情的召唤下执着地追求着真正的爱情和完美的人生。在历经了女王、女奴到女人的蜕变过程后,她终于凤凰涅槃,成为了文学史上最完美的女性形象之一。  关键词: 康妮 蜕变 完美    一、引言    八十年前,三易其稿的《查特莱夫人的情人》在佛罗伦萨出版。这是伟大的英国作家戴维·赫伯特·劳伦斯的最后
期刊
摘要: 随着新课程在农村校园的铺开,农村初中数学教师已逐渐转变观念,改变传统的教学方式。他们立足于农村的现状,寻找了一条适合农村孩子发展的课改之路。  关键词: 新课程 初中数学 以人为本    新课改乘教育发展之东风,迈进了农村校园,走进了师生的生活。站在第一线的农村初中数学教师已在逐渐更新观念,改变教学方式,他们遵循“以人为本”的原则,为学生提供了自主发展的平台;他们结合农村的特点,从学生已有
期刊
摘要: 二级学院作为一种新兴的办学模式为广大学生提供了一个进一步学习的机会。在二级学院怎样使用普通本科英语教材以适应二级学院学生的情况,怎样进行多媒体教学,教师在其中过程中又扮演一个怎样的角色,是一系列值得我们思索的问题。在具体的教学过程中,应该把非多媒体教学和多媒体教学以一个适当的比例结合起来,扬长避短,充分发挥两种方式的优势,实现良好的教学效果。  关键词: 二级学院 多媒体教学 非多媒体教学
期刊
摘要: 学习兴趣对英语学科很重要,兴趣是学好英语的先决条件,兴趣的培养是做好英语教学的基础工程。兴趣是学习的动力,学生对英语的兴趣直接影响到他们的学习效果。  关键词: 英语学习 兴趣 肯定评价 语言基础 情景教学 积极性    我国古代伟大教育家孔子说:“知之者不如好之者,好之者不如乐之者。”前苏联教育家苏霍姆林斯基也说:“所有智力方面的工作,都要依赖于兴趣。”由此可见,兴趣是求知获益的先导,是
期刊
摘要: 英语中的并列连词and有多种用法,其中一些用法比较特殊致使学生在使用时容易出错。本文对“and”的一些特殊用法做了探讨并给出大量例句予以解释,旨在帮助学生正确理解and的用法。  关键词: and 特殊用法 并列连词    据统计,“and”是英语语言中使用频率最高的词汇之一。在有五百万字的字典The American Heritage Dictionary中,“and”共出现了133,0
期刊
摘要: Satire与Irony是两种常用也难以区分的修辞手法。两者既有联系,也有区别。在英语专业高年级阶段,特别是在高级英语学习过程中,学生很容易将它们搞混淆。本文就《现代大学英语》(第六册)中一道相关的练习题引发的分歧展开讨论,期待帮助学生更好地区分和使用这几种修辞手法。  关键词: Satire Irony 差异    一、引言    在英语专业高级英语学习过程中,对于英语修辞手法的学习非常
期刊