浅谈PowerPoint在学科整合中的应用 浅谈PowerPoint在学科整合中的应用 用VFP程序控制Excel自动缩放分页打印
技术拾萃 上一版 下一版

《江苏科技报·教育周刊》(双周刊,国内统一刊号CN32-0019),是江苏省唯一以社会立场透析当代中国教育的报纸。秉承“科技推动教育,教育改变人生”的理念,《江苏科技报·教育周刊》一直注意保持与教育前沿工作的密切联系,定位于教育宏观研究,兼顾微观探讨,注重教育文化生态的构建与引导,时刻关注鲜活的教育实态,着眼于教育文化的深层构建,努力赋予教育以深厚的文化内涵,致力打造中国最好的教育媒体。

国内统一刊号:CN32—0019
编辑部地址:江苏省南京市鼓楼区中山路55号新华大厦48楼

第257期 总第4710期 2013年11月12日 星期二
返回首页
作者 内容  上一期  当前第257期  下一期
用VFP程序控制Excel自动缩放分页打印
来源:江苏省洪泽中学 作者:张沭钧 发布日期:2013-11-12 14:07:37

       当前,在学校教育中,有关考试等的数据统计,统计员常用VFP将结果统计出来,然后再将统计结果转化成Excel文件,供老师查看、打印。在此过程中,常有这样一个现实问题:很多时候,需要将超宽的内容放在一页纸中打完,比如,将每个班级成绩打印在一张纸中。在Excel中操作,需要先将页面设置成缩放为1页宽和1页高,再使用自动筛选,然后筛选出需要打印的班级,进行打印。这个过程,需要老师具有较高的Excel操作水平,并且每打印一个班级,就要筛选一次,再执行打印命令一次,如果有20个班级需要打印,显然操作比较繁琐。如果事先将字体缩小,将每个班级打印内容调整好在一张纸中,虽然打印时简单了,只需一个命令,但字体小了,不利于人眼观看,也不利于无纸化办公的推广;并且,由此造成统计人员的排版工作强度加大,有违办公自动化的实现目标。解决之道就是将Visual FoxPro(以下简称VFP)和Excel结合,利用VFP程序来控制Excel,实现自动缩放,分页打印。下面以Excel自动将一个年级中每个班级成绩在一张纸中打印完为实现目标,讲解具体过程。
       一、设计思路
       要想用VFP程序控制Excel,实现在一页纸中自动缩放,分页打印,关键要计算好打印内容的宽度缩放比和每页内容的高度缩放比。
       宽度缩放比,就是计算出需打印内容的宽度和打印纸张宽度之间的缩放比例,然后通过VFP程序将宽度缩放比例写在Excel页面设置中的缩放比例中(如下图)。在页面中设置缩放比例,而不是在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).ColumnWidth=8 &&将当前工作表的第1列宽度设为8个字符
       5.loExcel.ActiveSheet.Rowsd (2).Row Height=14.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*100≈74%即可。高度的缩放,因为只能通过一行一行地设置行高来达到,所以还需要考虑一个误差的问题。行高如果是缩小,字体也需要跟着缩小。另外,从美观考虑,如果是放大的情况,也可以不放大,就使用Excel默认的字体大小和行高。

发表评论
评论标题:
评论内容:
(500字符)
验证码: 看不清楚,请点击我
    
本网站所有内容属《江苏科技报·教育周刊》所有,未经许可不得转载
编辑部地址:江苏省南京市鼓楼区中山路55号新华大厦48楼
ICP备案编号:ICP备案编号:苏ICP备05076602号