1.在VB中制作报表一般来讲有三种方法:1、直接使用VB6.0中自带的DataReport来做,这种方法有很大的局限性,对于比较规则的报表,但对于比较复杂的报表,比如说一张报表,上部分是人员的工资,下部分是人员的各日的考勤,使用这种方法就无能为力。2、使用直接的打印方法,即Printer.print,这种方法直接向打印机打印,就象过去使用Foxpro似的,需要进行打印机定位,并且在Windows下,不同的字符数字所占的宽度也不相同,所以这种方法使用起来非常麻烦。3、使用微软的Excel。本文重点讨论用Excel来制作报表所涉及的问题。我们用Excel做报表时,不仅是将所要的内容填到Excel的工作表中,而且还需要填写公式、定义合适的格式(格线、字体、对齐)等。Excel的每张工作表是由若干行、若干列构成的,行列的交叉形成的小格称作单元格。我们正好可以用这些现成的单元格来做我们的报表的相应的格。为了程序简单,可以将报表的模板做好,如表头,相应的行高、列宽、字体、对齐调整好(事实上,这些也可以通过程序来实现,只是麻烦点。),然后利用VB程序来操纵Excel。这里我们以SQLSERVER7.0为后台数据。首先定义好需要的变量,在VB6.0的菜单"工程引用"中确保MicrosoftExcel8.0ObjectLibrary(在Excel2000中,此处为Excel9.0)复选框选中。再向Excel工作表中填入数据:DimVBExcelAsExcel.ApplicationDimxlbookAsExcel.Workbook定义Excel工作簿对象DimxlsheetAsExcel.Worksheet定义Excel工作表对象DimrssalaryAsNewADODB.Recordset定义记录集rssalary.OpenSQLStrsalary,CNstring,adOpenStatic,adLockReadOnlyrssalary为已计算好的工资数据记录集。SQLStrsalary是SQL语句(如select*FROMSALARY)。Cnstring是连接字符串(如ProviderSQLOLEDB.1;IntegratedSecuritySSPI;PersistSecurityInfoFalse;InitialCatalogDBname;DataSourceservername)。SetVBExcelcreateObject("excel.application")VBExcel.VisibleTrue根据操作人员是否需要见到Excel此处可设为TRUE或FALSESetxlbookVBExcel.Workbooks.Open(ExcelFile)ExcelFile为事先设计好的Excel模板文件(包括路径)Setxlsheetxlbook.Worksheets("salary")Salary为Excel模板工作表的名字xlsheet.Activate下面是向单元格中填写数据(以一个简单的工资打印为例):xh1Row6从第6行开始是工资数据,1-5行为工资单表头SumRowRowSumRow用来存放合计的起始行DoWhileNotrssalary.EOFCol1xlsheet.Cells(Row,Col).ValuexhColCol+1xlsheet.Cells(Row,Col).Valuerssalary("name")ColCol+1xlsheet.Cells(Row,Col).ValueStr(rssalary("jngz").Value)ColCol+1xlsheet.Cells(Row,Col).ValueStr(rssalary("jbdx").Value)ColCol+1xlsheet.Cells(Row,Col).ValueStr(rssalary("gwgz").Value)ColCol+1xlsheet.Cells(Row,Col).ValueStr(rssalary("zygz").Value)ColCol+1xlsheet.Cells(Row,Col).ValueStr(rssalary("jfgz").Value)ColCol+1xlsheet.Cells(Row,Col).ValueStr(rssalary("yfgz").Value)xhxh+1RowRow+1rssalary.MoveNextLoop以上可将各人的工资项打印出来,下面是合计(仅以一列的合计为例,填写公式):Col1xlsheet.Cells(Row,Col).Value""ColCol+1xlsheet.Cells(Row,Col).Value"合计"ColCol+1HeJi"SUM(c"+Trim(Str(SumRow))+":c"+Trim(Str(Row-1))+")"xlsheet.Cells(Row,Col).ValueHeJi填入公式,HeJi是一个字符串变量。如果用到的汇总是求平均、记数等,可用相应的Excel函数来替代上面的SUM,如COUNT、AVERAGE等。因为Excel中所见到的格线,其实并不是实际存在的线,只是为了分割各个单元格;而如果在Exce的选项中设置上有网格线的话,那么每一个格的四周都有线,并不一定能符合实际的需要。因此,如果只是某些地方需要画线,可用以下方法为某个单元格加上边框:xlsheet.Cells(Row,Col).Borders(xlTop).WeightxlThin其中Borders的参数可为:xlTop,xlBottom,xlRight,xlLeft代表位置。它的Weight的值可为:xlThin,xlMedium,xlThick....代表线粗。在Excel中,如果某个单元格的宽度小于其中内容的长度,其中的内容将显示一串"#",真正的内容就看不到了,我们可用以下的方法来解决: xlsheet.Cells(Row,Col).ShrinkToFittrue这样Excel可以自动将单元格中内容的字体缩小来适合所在的单元格的宽度。也可以将模板中所有可能用到的单元格格式的对齐方式中的"缩小字体填充"项选中,然后将不需要缩小字体填充的单元格设为: xlsheet.Cells(Row,Col).ShrinkToFitfalse由于Excel中对于对齐方式(即靠左、右,上、下等)有它自己默认的方式,如数字自动在单元格中靠右,文字自动靠左。如果需要中单元格的内容在某个单元格中的对齐方式可以这样来做:水平对齐:xlsheet.Cells(Row,Col).HorizontalAlignmentxlCenter其中xlCenter处可为xlLeft、xlRight。垂直对齐:xlsheet.Cells(Row,Col).VerticalAlignmentxlCenter其中xlCenter处可为xlTop、xlBottom。如果需要用到单元格的内容在多个单元格中居中(跨列居中),可以这样来实现(下例可实现第一行的A到H列居中):DimTotalAsRangeRangeCells"a"+RTrim(LTrim(Str(1)))+":"+"h"+RTrim(LTrim(Str(1)))SetTotalRange(RangeCells)Total.selectTotal.HorizontalAlignmentxlHAlignCenterAcrossselection然后在这几个单元格中的最前一个单元填入实际内容。xlsheet.Cells(1,1).Value"实际内容"有时我们可能会用到改变字体及尺寸,可以通过以下方法实现:Sheet1.Cells(Row,Col).Font.Name"隶书"Sheet1.Cells(Row,Col).Font.Size20在单元格中输入数字性的文本,如05182381104,写到Excel的单元格中时,Excel会自动将其视为数字,从而变为5182381104。要解决这个问题,可这样做:xlsheet.Cells(Row,Col).Value""+"05182381104"上句中的两个双引号中间是一个单引号。另外,如果一张Excel工作表的长度超过了所设定的打印机的纸张的长度,Excel将自动分页,第二页就会没有表头。在出现这种情况下,如果表头是模板中固定好的,可在模板中设置好,方法是在Excel的菜单"文件页面设置"中来设置。如果表头是在程序中形成的,可用下面的方法:xlsheet.PageSetup.PrintTitleRowsrows("1:6").Address这里"1:6"是根据表头所在的行来自行设定的。xlsheet.PageSetup.PrintTitleColumnsColumns("A:p").Address这里"A:P"是根据表头所在的列来设定的。通过上面这些方法来制做我们平常所见的报表,应该是不会有太大的问题。其实,我们在Excel软件中所能做到的,在VB中都可以通过调用来实现。
2.本文来自:U88(http://www.u88.cn)详细出处参考:http://news.u88.cn/zx/menhuwangzhan/64755.htm
VB6.0调用Excel制作任意表格-excel制作预约表格-会议室预定小程序
浏览量:1376
时间:
来源:wyp19870608
版权声明
即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

最新资讯
-
抖音再现本地生活服务,咫尺同城圈商业变现新通道
短视频成为本地生活探店网红营销变现引流的新阵地,每一位网红都渴望在短视频内“一夜爆红”。即速应用团队对多商家小程序进行升级,打造了咫尺同城圈:“同城探店营销助手”,不仅完善商家营销技巧,还助力探店网红玩转本地生活服务。 -
抖音再现本地生活服务,咫尺同城圈商业变现新通道
短视频成为本地生活探店网红营销变现引流的新阵地,每一位网红都渴望在短视频内“一夜爆红”。即速应用团队对多商家小程序进行升级,打造了咫尺同城圈:“同城探店营销助手”,不仅完善商家营销技巧,还助力探店网红玩转本地生活服务。 -
阿坝小程序代理
阿坝藏族羌族小程序代理公司有哪些?阿坝藏族羌族小程序代理平台哪个好?阿坝藏族羌族小程序代理商怎么收费,代理政策如何?下面就让即速应用产品经理jisuapp.cn来告诉你吧!