注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

多媒体教学

------稻庄镇中心小学信息技术与学科教学有效整合的研究与推广交流社区

 
 
 

日志

 
 

用VFP程序控制Excel自动缩放分页打印  

2013-11-22 14:52:17|  分类: 教师培训 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

江苏省洪泽中学 张沭钧

当前,在学校教育中,有关考试等的数据统计,统计员常用VFP将结果统计出来,然后再将统计结果转化成Excel文件,供老师查看、打印。在此过程中,常有这样一个现实问题:很多时候,需要将超宽的内容放在一页纸中打完,比如,将每个班级成绩打印在一张纸中。在Excel中操作,需要先将页面设置成缩放为1页宽和1页高,再使用自动筛选,然后筛选出需要打印的班级,进行打印。这个过程,需要老师具有较高的Excel操作水平,并且每打印一个班级,就要筛选一次,再执行打印命令一次,如果有20个班级需要打印,显然操作比较繁琐。如果事先将字体缩小,将每个班级打印内容调整好在一张纸中,虽然打印时简单了,只需一个命令,但字体小了,不利于人眼观看,也不利于无纸化办公的推广;并且,由此造成统计人员的排版工作强度加大,有违办公自动化的实现目标。解决之道就是将Visual FoxPro(以下简称VFP)和Excel结合,利用VFP程序来控制Excel,实现自动缩放,分页打印。下面以Excel自动将一个年级中每个班级成绩在一张纸中打印完为实现目标,讲解具体过程。
       一、设计思路
       要想用VFP程序控制Excel,实现在一页纸中自动缩放,分页打印,关键要计算好打印内容的宽度缩放比和每页内容的高度缩放比。
       宽度缩放比,就是计算出需打印内容的宽度和打印纸张宽度之间的缩放比例,然后通过VFP程序将宽度缩放比例写在Excel页面设置中的缩放比例中(如下图)。在页面中设置缩放比例,而不是在Excel工作表中缩小字体,好处就是不会因为字体的缩小而影响观看。

用VFP程序控制Excel自动缩放分页打印 - 多媒体教学 - 多媒体教学

  

高度缩放比,就是计算一页打印内容的高度和纸张高度之间的缩放比例,然后通过设置行高及字体大小来实现高度缩放。因为每个班学生人数会不一样,所以每页打印内容的高度就会不一样,在将成绩数据转化为Excel工作表后,要想一张纸打印一个班级,就需要通过VFP程序对每个班级计算出高度缩放比,然后对这个班级的学生记录进行行高及字体的大小调整,以达到一个班级打印在一张纸上的目的。
       分页的方法,就是在每个班级记录后插入一个分页符。
       二、计算方法
       在数据库中每张表的各个字段的宽度都是事先设计好的,其宽度单位是“字符”,将成绩表内容转换至Excel中后,默认情况下,在不做任何高度和宽度及字体大小调整的情况下,其打印内容的宽度和高度是多少厘米?这就需要我们了解一下Excel中有关行高、列宽度量单位及转换关系。
       Excel 使用字符、磅(点)和像素作为度量单位。单元格的宽度以字符和像素数表示(注:这里的“字符”宽度等同于数据库中表的字段宽度单位,1像素=2.54/96厘米),在工作表上拖动列号的边框来调整列宽时,将出现屏幕提示,显示以字符表示的宽度并在括号内显示像素数,设置列宽只能以字符为单位进行设置,而不能通过像素进行设置。列宽,通过像素来转换为厘米比较方便。根据实测,当列宽为1个字符宽度时,像素为13,以后每增加1个字符宽度,像素增加8个。变通一下,某列的列宽(单位:字符)通过像素转化为厘米的公式就是:(X字符宽度*8+5)*2.54/96厘米。要打印的班级成绩表(假设包含学号、姓名、各科成绩及名次等N个字段)的宽度就是:(各字段的字符宽度总和*8+N*5)*2.54/96厘米,若想在一张纸中打完,宽度缩放比是:纸张宽度/((各字段的字符宽度总和*8+N*5)*2.54/96)
       单元格的高度以磅(点)和像素数表示(注:磅就是点,1磅近似等于1/72英寸,或大约等于1/28.35厘米)。当我们在工作表上拖动行号的边框来调整行高时,将出现屏幕提示,显示以磅表示的高度并在括号内显示像素数,设置行高时只能以磅值而不能用像素来进行设置。Excel默认行高是14.25磅(19像素),如果一个班级有Y个学生,那么打完这个班级的学生记录所需的高度就是:Y*14.25/28.35厘米,若在一张纸中打完,高度缩放比就是:纸张高度/(Y*14.25/28.35)
       三、程序准备
       将数据库表转化至Excel工作表及实现上述目的,需要用到以下一些程序语句(注:以下括号、引号等均为英文状态下的标点符号,字母大小写均可,&&后内容为程序语句作用的注解):
       1.loExcel=CreateObject(Excel.Appliation)  &&创建Excel对象
       2.loExcel.WorkBooks.Open( 'C:\Excel\学生成绩.xls' ) &&打开现存的工作簿
       3.loExcel.Cells(1,1).Value=高一年级.姓名  &&将数据库“高一年级”成绩表中的姓名写入到Excel当前工作表中第1行第1列单元格中
       4.loExcel.ActiveSheet.Columns(1).ColumnWidth8 &&将当前工作表的第1列宽度设为8个字符
       5.loExcel.ActiveSheet.Rowsd (2).Row Height14.25  &&将当前工作表的第2行高度设为14.25(注意,Excel行高小数部分只能是0.25的倍数)
       6.loExcel.WorkSheets(1).Rows(8).PageBreak=1  &&在第1个工作表中第8行之前插入分页符
       7.loExcel.ActiveSheet.PageSetup.Zoom=95  &&Excel当前工作表页面缩放至95%
       8.loExcel.ActiveWorkBook.save  &&保存工作簿
       9.loExcel.WorkBooks.Close  &&关闭工作簿
       10.loExcel.quit  &&退出Excel
       11.release loExcel  &&删除对象变量
       四、细节事项
       因为宽度缩放比例是填写在Excel页面设置中的缩放比例位置上的,又因为在Excel中,缩放比例的作用是整体缩放,即宽度缩放的同时,高度也跟着缩放,所以在后面写程序的时候,就要考虑到这一点。比如,假设某一个班级成绩要想在一张纸打完,宽度需要缩小95%,高度缩小70%,那么高度实际只需缩小0.7/0.95*10074%即可。高度的缩放,因为只能通过一行一行地设置行高来达到,所以还需要考虑一个误差的问题。行高如果是缩小,字体也需要跟着缩小。另外,从美观考虑,如果是放大的情况,也可以不放大,就使用Excel默认的字体大小和行高。

  评论这张
 
阅读(232)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017