微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题利用VFP制作财务报表——谈VFP与Excel的交互操作
栏目软件世界
作者周鸣扬
发布2000年第4期
  在VFP中制作财务报表(或者是其他报表),通常的方法是利用VFP的报表生成器一步一步地生成,这种方法用起来很麻烦,而且打印出来的报表格式也不能尽如人意。提到制作报表,你可能够马上想到大名鼎鼎的Excel,我们能不能将二者结合起来——利用VFP的数据处理的结果,再使用Excel排版并且打印输出,而且还要让二者结合得天衣无缝呢?答案是肯定的,利用OLE技术,你能够很容易地实现上述想法。
  大家对VFP的CreateObject函数可能不会陌生,利用CreateObject函数,你能够在VFP中创建并使用任何在你计算机上注册了的类(通常在安装应用程序时,应用程序都会向注册表里添加类信息)。也就是说你能够在VFP中调用任何应用程序为你的数据处理服务。CreateObject的具体用法如下:
  CREATEOBJECT(ClassName[eParameter1,eParameter2,...])
  其中,ClassName指明欲建立对象的类名。eParameter1,eParameter2……是用来传递参数给OLE对象的(OLE对象进行初始化时要用要到的)。例如,在VFP中欲建立一Excel工作簿对象,只须在程序中加入下列语句:MySheet=CREATEOBJECT('Excel.Sheet')就行了。
  要在VFP中灵活地调用Excel为你服务,首先你应该对Excel提供的各类对象进行深入了解。Excel为我们提供了一百多种对象,如应用程序对象、图表对象、工作簿对象等等。对于每种对象调用,你得遵循一定的规则(也就是说你必须熟悉VBA编程)。接下来介绍Excel常见对象的调用方法。
  一、创建Excel对象类
  1.建立Excel对象MyExcel=CREATEOBJECT('Excel.application')
  2.建立工作簿对象MyExcel.workbooks.Add
  二、文件操作类
  1.引用Excel文件Getobject("Excel文件名")
  2.打开文件workbook.open("文件名")
  3.保存文件workbook.SaveAs("文件名")
  4.打印文件workbook.Printout("文件名")
  注意,上面的workbook为当前活动的工作簿。
  实例:假设到了月底,你用计算机对当月的账务资料整理后,得出了当月的损益表,底稿如下(名称为syb.dbf)。
  项 目  本月数 本年累计数
  产品销售收入  98765.4
  产品销售成本  73244.3
  产品销售费用  1878.00
  产品销售税金及附加355
  产品销售利润  ---
  其他业务利润
  管理费用   678
  财务费用   333
  营业利润   ---
  投资收益
  营业外收入  1000
  营业外支出
  利润总额   ---
  由于Excel中自带了损益表模板,因此我们能够很方便地在Excel中创建损益表。在VFP中建立一程序syb.prg,其内容如下(为节约篇幅,程序中略去了输入本年累计数的语句)。
  close all
  use syb
  go top
  *新建一Excel对象
  oleapp=Createobject("Excel.Application")
  *让Excel对象可见,如果设为F(不可见),你能够让VFP后台运行Excel,借此可以保持界的一致性。
  oleapp.visible=.t.
  *添加工作簿
  oleapp.workbooks.add
  *打开Excel自带的财务报表模板
  oleapp.workbooks.open("C:\Program Files\Microsoft Office\Templates\电子表格模板\工业企业财务报表.xlt")
  *激活损益表
  oleapp.sheets("损益表").select
  *追加数据
  i=1
  do while i<=13
  if i#5 and i#9 and i#13
  oleapp.cells(i+6,4).value=本月数
  endi
  i=i+1
  skip
  endd
  应该注意的是,在Excel自带的损益表模板中,有些单元格是自动计算的,如产品销售利润、营业利润、利润总额,你不能够去修改的。这也是在上面程序中加入“if i#5 and i#9 and i#13”语句的原因。另外,你事先应该根据你的实际情况对损益表模板进行修改,比如设置纸张大小、字体等等。当然你也可以在运行时进行设置(加入oleapp.activeworkbook.printpreview)语句。
  上面只是简单地介绍了在VFP中生成损益表的方法。要想更好地将VFP和Excel结合,你可以在Excel中尝试“录制宏”的功能,因为你在Excel中的任何操作都能够被录制成“宏”。“宏”能够以VBA语句的形式重现你刚才的你操作。举一反三,这下利用VFP做出精美的财务状况变动表、利润分配表、主营业务收支明细表,再也不是难事了。