


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VB6.0调用Excel制作任意表格 在VB中制作报表一般来讲有三种方法: 1、直接使用VB6.0中自带的Data Report 来做,这种方法有很大的局限性,对于比较规则的报表,但对于比较复杂的报表,比如说一张报表,上部分是人员的工资,下部分是人员的各日的考勤,使用这种方法就无能为力。 2、使用直接的打印方法,即Printer.print ,这种方法直接向打印机打印,就象过去使用Foxpro似的,需要进行打印机定位,并且在Windows下,不同的字符数字所占的宽度也不相同,所以这种方法使用起来非常麻烦。 3、使用微软的Excel。本文重点讨论用Excel来制作报表所涉及的问题。我们用Excel做报表时,不仅是将所要的内容填到Excel的工作表中,而且还需要填写公式、定义合适的格式(格线、字体、对齐)等。 Excel的每张工作表是由若干行、若干列构成的,行列的交叉形成的小格称作单元格。我们正好可以用这些现成的单元格来做我们的报表的相应的格。为了程序简单,可以将报表的模板做好,如表头,相应的行高、列宽、字体、对齐调整好(事实上,这些也可以通过程序来实现,只是麻烦点。),然后利用VB程序来操纵Excel。 这里我们以SQL SERVER 7.0为后台数据。首先定义好需要的变量,在VB6.0的菜单“工程引用”中确保 Microsoft Excel 8.0 Object Library(在Excel2000中,此处为Excel 9.0)复选框选中。 再向Excel工作表中填入数据: Dim VBExcel As Excel.Application Dim xlbook As Excel.Workbook 定义Excel工作簿对象 Dim xlsheet As Excel.Worksheet 定义Excel工作表对象 Dim rssalary As New ADODB.Recordset 定义记录集 rssalary.Open SQLStrsalary, CNstring, adOpenStatic, adLockReadOnly rssalary 为已计算好的工资数据记录集。 SQLStrsalary 是SQL语句(如SELECT * FROM SALARY)。 Cnstring 是连接字符串(如Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False; Initial Catalog=DBname;Data Source=servername)。 Set VBExcel = CreateObject(excel.application) VBExcel.Visible = True 根据操作人员是否需要见到Excel此处可设为TRUE 或FALSE Set xlbook = VBExcel.Workbooks.Open(ExcelFile) ExcelFile为事先设计好的Excel模板文件(包括路径) Set xlsheet = xlbook.Worksheets(salary) Salary 为Excel模板工作表的名字 xlsheet.Activate 下面是向单元格中填写数据(以一个简单的工资打印为例): xh = 1 Row = 6 从第6行开始是工资数据,1-5 行为工资单表头 SumRow = Row SumRow用来存放合计的起始行 Do While Not rssalary.EOF Col = 1 xlsheet.Cells(Row, Col).Value = xh Col = Col + 1 xlsheet.Cells(Row, Col).Value = rssalary(name) Col = Col + 1 xlsheet.Cells(Row, Col).Value = Str(rssalary(jngz).Value) Col = Col + 1 xlsheet.Cells(Row, Col).Value = Str(rssalary(jbdx).Value) Col = Col + 1 xlsheet.Cells(Row, Col).Value = Str(rssalary(gwgz).Value) Col = Col + 1 xlsheet.Cells(Row, Col).Value = Str(rssalary(zygz).Value) Col = Col + 1 xlsheet.Cells(Row, Col).Value = Str(rssalary(jfgz).Value) Col = Col + 1 xlsheet.Cells(Row, Col).Value = Str(rssalary(yfgz).Value) xh = xh + 1 Row = Row + 1 rssalary.MoveNext Loop 以上可将各人的工资项打印出来,下面是合计(仅以一列的合计为例,填写公式): Col = 1 xlsheet.Cells(Row, Col).Value = Col = Col + 1 xlsheet.Cells(Row, Col).Value = 合计 Col = Col + 1 HeJi = =SUM(c + Trim(Str(SumRow) + :c + Trim(Str(Row - 1) + ) xlsheet.Cells(Row, Col).Value = HeJi 填入公式,HeJi是一个字符串变量。 如果用到的汇总是求平均、记数等,可用相应的Excel函数来替代上面的SUM,如COUNT、AVERAGE等。 因为Excel中所见到的格线,其实并不是实际存在的线,只是为了分割各个单元格;而如果在Exce的选项中设置上有网格线的话,那么每一个格的四周都有线,并不一定能符合实际的需要。因此,如果只是某些地方需要画线,可用以下方法为某个单元格加上边框: xlsheet.Cells(Row, Col).Borders(xlTop).Weight = xlThin 其中Borders 的参数可为:xlTop,xlBottom,xlRight,xlLeft 代表位置。 它的Weight 的值可为:xlThin,xlMedium,xlThick. 代表线粗。 在Excel 中,如果某个单元格的宽度小于其中内容的长度,其中的内容将显示一串“”,真正的内容就看不到了,我们可用以下的方法来解决: xlsheet.Cells(Row, Col).ShrinkToFit = true 这样Excel可以自动将单元格中内容的字体缩小来适合所在的单元格的宽度。也可以将模板中所有可能用到的单元格格式的对齐方式中的“缩小字体填充”项选中,然后将不需要缩小字体填充的单元格设为: xlsheet.Cells(Row, Col).ShrinkToFit =false 由于Excel中对于对齐方式(即靠左、右,上、下等)有它自己默认的方式,如数字自动在单元格中靠右,文字自动靠左。如果需要中单元格的内容在某个单元格中的对齐方式可以这样来做: 水平对齐:xlsheet.Cells(Row, Col).HorizontalAlignment = xlCenter 其中xlCenter处可为xlLeft、xlRight。 垂直对齐:xlsheet.Cells(Row, Col). VerticalAlignment = xlCenter 其中xlCenter处可为xlTop、xlBottom。 如果需要用到单元格的内容在多个单元格中居中(跨列居中),可以这样来实现(下例可实现第一行的A到H列居中): Dim Total As Range RangeCells = a + RTrim(LTrim(Str(1) + : + “h” + RTrim(LTrim(Str(1) Set Total = Range(RangeCells) Total.Select Total.HorizontalAlignment = xlHAlignCenterAcrossSelection 然后在这几个单元格中的最前一个单元填入实际内容。 xlsheet.Cells(1, 1).Value = “实际内容” 有时我们可能会用到改变字体及尺寸,可以通过以下方法实现: Sheet1.Cells(Row,Col).Font.Name = 隶书 Sheet1.Cells(Row,Col).Font.Size = 20 在单元格中输入数字性的文本,如05182381104,写到Excel的单元格中时,Excel会自动将其视为数字,从而变为5182381104。要解决这个问题,可这样做: xlsheet.Cells(Row, Col).Value=+05182381104 上句中的两个双引号中间是一个单引号。 另外,如果一张Excel工作表的长度超过了所设定的打印机的纸张的长度,Excel将自动分页,第二页就会没有表头。在出现这种情况下,如果表头是模板中固定好的,可在模板中设置好,方法是在Excel的菜单“文件页面设置”中来设置。如果表头是在程序中形成的,可用下面的方法: xlsheet.PageSetup.Print
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国气动钉枪行业投资研究分析及发展前景预测报告
- 2025年中国调料行业发展潜力预测及投资战略研究报告
- 电器可行性报告范文
- 2025年中国智能控制器行业发展趋势及投资前景预测报告
- 2025-2030年中国建材预制构件项目投资可行性研究分析报告
- 名表培训课件
- 建筑工程施工合同
- 中国音乐播放器行业发展监测及市场发展潜力预测报告
- 轮纹特胶悬剂行业深度研究分析报告(2024-2030版)
- 中国汽车防锈市场竞争格局及投资战略规划报告
- Andhadhun Theme 02 《调音师》钢琴谱钢琴简谱 数字谱 钢琴双手简谱
- 一级圆柱齿轮减速器的设计计算22001文档
- 第19章一次函数-一次函数专题数形结合一一次函数与45°角模型讲义人教版数学八年级下册
- 2023年四川省宜宾市叙州区数学六年级第二学期期末考试模拟试题含解析
- 幼儿园警察职业介绍课件
- 灭火器维修与报废规程
- 皮肤病的临床取材及送检指南-修订版
- 机型理论-4c172实用类重量平衡
- 管道工厂化预制推广应用课件
- 海水的淡化精品课件
- 项目工程移交生产验收报告
评论
0/150
提交评论