巧将Excel建立的工作簿文件转成VFP成绩报表

  • 格式:doc
  • 大小:45.00 KB
  • 文档页数:16

巧将Excel建立的工作簿文件转成VFP成绩报表图1找到需导入的电子工作簿能否将Excel 2000建立的工作簿文件转化成Microsoft Excel 5.0和97(XLS)格式?启动Excel 2000,打开“另存为”对话框,发现保存类型可以保存为Microsoft Excel 5.0/95工作簿,于是将Excel 2000建立的工作簿文件保存为Microsoft Excel 5.0/95工作簿,再进行VFP中的“导入”操作,工作簿被成功导入了。

在“命令”窗口中,输入“list”,查看导入的结果,无误!用“list stru”,发现“字段名”、类型、字段“宽度”不合要求,在“命令”窗口使用“modi stru”命令分别按要求对“字段名”、类型、字段“宽度”进行修改,如图2所示。

图2对字段宽度进行修改修改完毕,用VFP进行“导出”操作,如图3所示,至此符合要求的VFP成绩报表制作完成了。

图3用VFP进行导出利用VFP制作财务报表——谈VFP与Excel的交互操作在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 alluse sybgo 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=1do while i <=13if i#5 and i#9 and i#13oleapp.cells(i+6,4).value=本月数endii=i+1skipendd应该注意的是,在Excel自带的损益表模板中,有些单元格是自动计算的,如产品销售利润、营业利润、利润总额,你不能够去修改的。

这也是在上面程序中加入“if i#5 and i#9 and i#13”语句的原因。

另外,你事先应该根据你的实际情况对损益表模板进行修改,比如设置纸张大小、字体等等。

当然你也可以在运行时进行设置(加入oleapp.activeworkbook.printpreview)语句。

上面只是简单地介绍了在VFP中生成损益表的方法。

要想更好地将VFP和Excel结合,你可以在Excel中尝试“录制宏”的功能,因为你在Excel中的任何操作都能够被录制成“宏”。

“宏”能够以VBA语句的形式重现你刚才的你操作。

举一反三,这下利用VFP做出精美的财务状况变动表、利润分配表、主营业务收支明细表,再也不是难事了。

从Excel表转移数据到VFP表的编程实现方法作者: 高进龙摘要:把整个一个Excel表数据转换为VFP表并不难,难就难在把Excel表中某些行某些列的数据转移到已有数据的某个VFP表中,而且可能还会遇到两表间相应数据列的名称、数据类型、排列顺序不同的问题。

作者用VFP编程,轻松实现了这一数据转移工作。

本文将就这一程序的设计思想和实现方法做简要介绍。

关键词:Excel表,VFP表,转移数据,编程实现一、问题的提出VFP(Visual Foxpro)是一种关系型数据库管理系统,其强大的数据处理能力及其面向对象的编程能力,使其得到数据库应用程序开发人员的广泛使用。

而Excel则是一个优秀的电子表格处理软件,在兼容性、操作界面、公式运算、图表表现等方面有着独到的优势,成为广大办公应用人员常用的工具。

因为两种软件各有短长,所以在实际应用中常会遇到两者之间数据的转移问题。

把整个VFP表转换为Excel表或者把整个Excel表转换为VFP 表的工作,两种软件都提供了相应的转换功能,一般用户很容易操作。

但是把Excel表中部分数据转移到已存在的VFP表中的情况就要复杂得多。

两种表的数据转移可能存在以下三个方面的问题:一是Excel表中可能存在某些行的数据不需要或不能被转移,需要转移或者可以转移的仅是其中较规范的某些行;二是Excel表并非所有列的数据,而只是某些列的数据需要被转移到VFP表的相应数据列中,两表中相应列的名称和顺序可能不一致;三是Excel表中与VFP表对应数据列的数据类型可能不一致。

因此,对业已存在的这两类数据表间数据转移工作,用手工完成非常麻烦和费时。

在工作实践中,作者运用VFP编程驱动Excel的能力,设计完成了从Excel到VFP的数据转移程序,成功地解决了这一问题。

二、设计思路综合考虑上述三个问题,程序设计宜采用的方法是把Excel表中数据按单元格逐一转移到VFP表中,所以,需要完成下列三项任务:(1)建立Excel表中要转移数据的列与VFP表中要接受数据的字段之间一一对应的关系,这项工作等于给两表之间的数据转移牵线搭桥,是非常关键的一项任务(如图2所示)。

(2)读取Excel表中要转移数据的起止行行号,从横向上确定要转移数据的范围。

Excel表中一行数据(也可能是一行中的某些列)对应VFP表中的一条记录。

(3)转移数据时要处理两表中数据类型不一致的问题,以及数值型数据小数位数不一致而必须考虑的数据四舍五入问题。

在考虑上述三项任务的实现方法时,还要考虑用户操作的便捷性,直观性。

本程序的所有操作对象都展现在图1所示的桌面上,所有操作无需键盘输入,只需点击鼠标。

三、实现方法本程序设计了一张表单,在表单顶部设置了五个按钮、两个文本框,下部设置了一个表格控件(如图1下半部所示`),它们将完成下列五个步骤的工作:1、打开数据表指打开已存在的VFP数据表,打开的VFP表会显示在表单下部的表格控件中。

此表被打开,一是为了直观地向用户展示表的结构及数据,二是为了在建立与Excel表关联关系时供用户用鼠标选择相关的列。

2、打开Excel表指打开要转移数据的Excel表。

首先利用VFP系统自带的函数创建一个Excel应用对象,并借助该对象的方法打开Excel表,以后VFP程序还要调用该对象的方法和属性完成对Excel表的各种操作。

3、XL—VFP勾通即建立Excel表中列与VFP表中对应字段之间的关联关系。

用户在操作此项功能前,先要把Excel表和VFP表平铺在桌面上(如图1所示),并分别点击鼠标到要建立关联的Excel表列和VFP表字段列中使其被选中,然后再点击“XL—VFP勾通”按钮,程序便会自动在关联数据表中增加一条记录,保存两表间数据的关联关系,依次建立两表中所有数据项之间的关联关系,所有操作均在图1展示的界面中完成,直观便捷。

上述方法建立的两表间关联关系存储在一个磁盘数据表中,可以被多次重复使用。

此关联表的内容与结构用图3所示的表单展示给用户,其右上角的“?”按钮提供一个功能菜单帮助用户操作此表,如用户不再重用此表中关联数据时可以清除其中记录。

当用户不需要查看关联表的内容时,图3所示表单可以减缩为一个命令按钮排列在打开“Excel表”按钮之右。

4、确定起止行号读取Excel表中需要转移数据的起、止行行号,并记入表单顶部的两个文本框中。

行号的读取可以用鼠标先点击Excel表中起始行的任意一个列的单元格使其得到焦点,然后再点击存放起始行号的文本框,程序通过调用Excel应用对象的相关属性读取起始行号并存入文本框中。

终止行的读取方法与之相同。

当然也可以直接在文本框中输入起止行号。

5、数据转移上述四个步骤完成后,便可点击表单右上部的“Xl→Vfp”按钮,进行数据的转移工作。

“Xl→Vfp”按钮的click事件代码按照关联表(图3所示)中记录的两表间数据项的关联关系,按照一行一个记录的方式,将Excel表每一行中相关单元格的数据逐一复制到VFP表中对应的字段中,复制过程还可能要转换数据类型以及对数值型数据做小数位数的调整工作。