
Visual FoxPro是应用广泛的前台数据库开发平台之一,因此在我们日常工作中时常会遇到DBF数据
文件。然而随着办公自动化的普及,越来越多的时候需要将DBF文件转化为Excel电子文档。常用转
化方法是在FoxPro中用Copy命令进行格式转化或直接用Excel打开DBF文件。这两种方式虽然都能达
到目的,却不能得到格式规范、可以直接打印输出的报表,且输出的Excel文件中,无法对数据类型
进行有效转换,极易出现数据统计错误。有没有更好的方法呢?这里有一个更加通用的方法,在VFP
中调用Excel,可以由DBF文件直接生成格式如下图所示一样复杂的Excel报表(如图1)。 Excel报表
具体过程如下:
编辑推荐文章
● 新鲜接触Excel 2000 XP
● Excel 2000公式应用的几条经验
● Excel 2000函数应用之信息函数
假设我们要将表Agcallop.dbf文件输出为Excel格式文档,报表形如图1所示。为使通用性更
强,页面采用A4纸横向输出,默认字体为宋体10号,页脚处添加页号。
部分程序代码如下:
m.outfilename=putfile('输出结果','agcallop','xls')&&取导出文件名称ef=CREATEOBJECT('Excel.application')&&调用Excel程序ef.Workbooks.add&&添加工作簿ef.Worksheets("sheet1").Activate&&激活第一个工作表ef.visible=.t.&&显示Excel界面ef.Cells.Select&&选择整张表ef.Selection.Font.Size = 10&&设置整表默认字体大小为10select 0use agcallop&&选择被导出的表num=reccount()&&求导出总记录数go topi=5ef.range("F1:K1").Select&&选择标题栏所在单元格ef.Selection.Merge&&合并单元格with ef.range("F1 ")&&设置标题及字体属性.value='客户服务部业务代表工作量情况统计表'.Font.Name="黑体".Font.size=18endwithef.Rows(2).RowHeight=1/0.035&&设置第二行高度为1cmef.range("H2:O2").Select&&选定统计条件栏所在单元格ef.Selection.Merge&&合并单元格ef.range("H2").Font.size=10ef.range("H2").HorizontalAlignment=4&&设置内容对齐方式为右对齐,3为居中,2为右对齐ef.range("H2").value='统计时间:'+dtoc(date())+' 打印日期:'+dtoc(date())ef.Rows("3:4").Selectwith ef.Selection.HorizontalAlignment = 3&&设置3、4行为水平对齐.VerticalAlignment = 2&&垂直居中.NumberFormatLocal = "@"&&设置3、4行为字符型内容endwithef.Range("A3:A4").Selectef.Selection.Merge&&纵向合并第一列3、4行ef.Range("A3").value='工号'&&设置第一列标题内容ef.Columns("A").Select&&整列选择ef.Selection.HorizontalAlignment = 3&&水平居中ef.Columns("A:B").Selectef.Selection.NumberFormatLocal = "@"&&设置A、B列为字符型内容ef.Range("B3:B4").Selectef.Selection.Merge&&纵向合并第二列3、4行ef.Range("B3").value='姓名'&&设置第二列标题内容ef.Columns("B").Select&&整列选择ef.Selection.HorizontalAlignment = 3&&水平居中ef.Range("C3:E3").Select&&横向合并第三行C-E列ef.Selection.Mergeef.Range("C3").value='话务总量'&&第三行大标题为“话务总量”的列ef.Range("C4").value='电话呼入量'&&“话务总量”下第1个小标题“电话呼入量”ef.Range("D4").value='电话呼出量'&&“话务总量”下第2个小标题“电话呼出量”ef.Range("E4").value='合 计'&&“话务总量”下第3个小标题“合计”ef.Range("F3:H3").Selectef.Selection.Mergeef.Range("F3").value='话务总时间'ef.Range("F4").value='呼入时间'ef.Range("G4").value='呼出时间'ef.Range("H4").value='合 计'ef.Range("I3:K3").Selectef.Selection.Mergeef.Range("I3").value='单个话务平均时间'ef.Range("I4").value='呼入时间'ef.Range("J4").value='呼出时间'ef.Range("K4").value='合 计'ef.Range("L3:L4").Selectef.Selection.Mergeef.Range("L3").value='累计工作时间'ef.Range("M3:M4").Selectef.Selection.Mergeef.Range("M3").value='无效时间'ef.Range("N3:N4").Selectef.Selection.Mergeef.Range("N3").value='录入量'ef.Range("O3:O4").Selectef.Selection.Mergeef.Range("O3").value='有效时间比'
接下来通过scan语句,依次为每一行每一列单元格赋值。为了获得更好的打印效果,还需进行页面
设置,如标题行、页面居中、横向排版等,还可以加边框线。
以上程序在VFP 6+Excel 2000+Windows 2000下调试通过。实际应用中可根据需要对各项参数设置
进行相应调整。
猫猫的心里话
加菲猫的VFP|狐友会社群接收投稿啦
加菲猫的VFP,用VFP不局限VFP,用VFP混合一切。无论是VFP,还是JS,还是C,只要能混合起来,都可以发表。
商业模式,销售技巧、需求规划、产品设计的知识通通可以发表。
暂定千字50元红包,,优秀的文章红包更大,一经发表,红包到手。
如何帮助使用VFP的人?
用VFP的人,有专业的,有非专业了,很多人其实是小白,问出的问题是小白,如果问题不对,我们引导他们问正确的问题。无论如何请不要嘲笑他们说帮助都不看,这么简单的问题都不会,嘲笑别人不行,而无法提出建设性答案,是很low的。
我们无论工作需要,还是有自己的软件,都是是需要真正的知识,如何让更多人学习真正的VFP知识呢,只需要点赞,在看,能转发朋友圈就更好了。
加菲猫的vfp倡导用"VFP极简混合开发,少写代码、快速出活,用VFP,但不局限于VFP,各种语言混合开发"。
我已经带领一百多名会员成功掌到VFP的黑科技,进入了移动互联网时代,接下来我们要进入物联网领域。
2025年狐友会社群会员继续招募中
社群会员获取的权益有:
祺佑三层开发框架商业版(猫框),终身免费升级,终身技术支持。
开放的录播课程有:
微信小程序,微信公众号开发,H5 APP开发,Extjs BS开发,VFP面向对象进阶,VFP中间层开发。
源码类资源有:
支付组件源码,短信源码,权限组件源码,一些完整系统的源码。这个可以单独出售的,需要的可以联系我。
会员也可以实现群内资源对接,可以接分包,合作等各项商业或技术业务


