搜档网
当前位置:搜档网 › 如何实现将vfp中的数据在Excel中的复杂输出

如何实现将vfp中的数据在Excel中的复杂输出

收稿日期:2003—12—30

作者简介:卢珊(1976-),女,黑龙江绥化人,保定师范专科学校数学与计算机系助教。

如何实现将VFP 中的数据在Excel 中的复杂输出

卢 珊

(河北保定师范专科学校数学与计算机系,河北保定071051)

摘 要:Visual F oxPro 具有较强大的数据存储和加工能力。但是对于复杂报表的输出却显得尤为脆

弱。为了能够输出较为完美的数据报表,往往与其他软件配合完成,以达到理想效果。利用OOP 思想及数据格式转换与Excel 软件配合使用即可完成上述功能。

关键词:报表;对象;属性中图分类号:TP3111138 文献标识码:B 文章编号:1009—0487(2004)01—0132—03

H ow to Output Complicated Data Made in Visual FoxPro by Excel

LU Shan

(Mathematics and C om puter ,Baoding T eachers ’C ollege ,Baoding Hebei 071051,China )

Abstract :The s oftware Visual F ox Pro has strong ability of storing and managing multiply data.But it seems like s ome weak to make com plex report.T o com plete a perfect report ,it always cooperate with other s oftware .Now we intro 2duce three methods to make a report cooperated with Excel 2000.

K ey w ords :report ;object ;property ;method

在数据库应用中,报表是最常用的打印文档,它为显示并总结数据提供了灵活的途径。因此,报表设计是应用程序开发的一个重要组成部分。但若要得到用户满意的报表,需要仔细研究。在Visual F oxPro 中,报表设计的功能针对我国目前的实际应

用情况还是比较弱的,所以有必要借助其他软件的

功能,与Visual F oxPro 配合制作出精美的报表。

下面详细讨论Excel 和Visual F oxPro 配合制作满意报表的问题。

一、F oxPro 调用Excel 基本操作

把Excel 作为应用程序对象来操作,即Excel.Application 。同样,在Excel 中也把VFP 作为应用程

序对象来对待的,即F oxPro.Application 。下面通过例子来说明:

例1:

OExcel =CRE ATE OB J ECT (″Excel.Application ″

) &&创建Excel 对象

OExcel.w orksbooks.add &&添加新工作簿

2

31第17卷第1期2004年3月 伊犁教育学院学报JOURNA L OF YI LI EDUCATION CO LLEGE

Vol.17.NO.1

Mar.2004

OExcel.visible=.t.&&让Excel可见

OExcel.w orksheets(″sheet1″).Application&&激活第1个工作表

OExcel.Caption=″VFP数据在EXCE L中显示″&&设置Excel应用程序标题栏

F or i=1to9

F or j=1to9

OExcel.Cells(i,j).Value=i3j&&给单元格赋值

Next j

Next i

OExcel.ActiveSheet.R ow(1)https://www.sodocs.net/doc/a614907258.html,=?黑体?&&为第一行设置字体为黑体

OExcel.ActiveSheet.Cells(2,1).font.size=25&&为第二行第一列设置字号为25磅

OExcel.ActiveSheet.Paper Size=1&&打印网格线

OExcel.ActiveSheet.PrintPriview&&预览

OExcel.ActiveW orkbook.SaveAs(〃d:/pratise/ change.xls〃)&&另存

由上例可知,在VFP中可以生成一个关于Excel 应用程序类的对象,此时调用对象的方法并设置属性的值,就可以完成与Excel环境下的设置一样的效果。

二、对于上面的方法,需要用户知道Excel的很多属性和方法。对于复杂的报表设计,上述方法是非常麻烦的。

为了简便,可以先到Excel中,手工制作一个报表模板,在输出的时候,只要将VFP中的数据填进来即可。比如:我们已经手工制作了如下样式的Excel模板,并将其保存为Excel模板D:/Practise/ Mexl.xlt。为了向Excel传递数据,可以设计一个表单,通过表单选择相应的教研组,然后,打印指定教研组的排课信息。打印排课信息的表单如图所示:代码设计过程如下:

(一)在表单init事件中输入:

public staff(2)

sele distin staff from k4into arra staff&&将基本表中的不同教研室的信息存储到数组staff

(二)设计组合框:

采用上面定义的数组作为列表内容。从列表中可以找到所有的教研组的值。

(三)设计“打印”按钮:

在“打印”按钮的Click事件中,输入如下代码:

dimen result(5,3)

sele cname,teacher,staff from k4where staff=this2 https://www.sodocs.net/doc/a614907258.html,bo1.value into array result

&&将通过组合框选择的教研室的信息查询出来以后存到数组result中

ff=createobject(”excel.application”)&&创建应用程序对象ff

ff.visible=.t.&&使得应用程序对象ff可见

ff.w orkbooks.add(”D:/practise/mexl.X LT”)

&&将已制作好的Excel模板添加到当前的工作簿

ff.w orksheets(”sheet1”).activate&&将对象ff的sheet1激活

for i=1to5

&&通过循环语句将VFP中的数据传递到Excel 模板中

for j=1to3

if.not.em pty(result(i,j))

ff.cells(3+i,j)=result(i,j)

ff.cells(2,4)=this https://www.sodocs.net/doc/a614907258.html,bo1.value

ff.cells(2,2)=date()

endif

next j

next i

这样经过编译执行表单后,选择组合框中的某个教研室,单击“打印”按钮,此时就会启动Excel模板,将所查询的结果自动填充到模板中,实现VFP 的数据在Excel程序中的输出。

在上面这段程序中,利用了面向对象编程思想,通过创建对象、设置对象的相关属性和方法实现的,要求用户具有较高的编程素质。由于在Visual F ox2 Pro中,数据模型以关系型为主,大量的数据都是以二维表的形式进行存储和处理的。如果要输出三维或多维表等比较复杂的形式,在Visual F oxPro报表设计器中则很难实现。除了以上两种方法以外,还有一些较为简便的操作方法,适合于简单的数据的传递和处理。利用数据存储格式的转换,也可以完成VFP和Excel之间数据的共享。

331

三、如要输出以下式样的表格,这是一个多维表格,利用VFP中的报表功能无法实现这种表格的斜线表头。但是数据的存储和加工是在VFP中完成的。

解决的办法如下:

(一)在VFP中找到存储数据的基本表或视图,然后执行“文件”菜单中的“输出(Export)”菜单项。此时会出现如下对话框:其中“类型(TY PE)”一项选择转换成目标文件的类型。本例为“Micros oft Excel 5.0(X LS)”。“目标(to)”栏中的地址确定已被转换了数据类型的文件的地址。“选项(option)”按钮可以设置输出数据的筛选条件。

(二)打开Excel文件以后,就可以按照Excel的格式设置方法进行设计。比如,文件输出时要求每页都具有上述的页表头,此时可以利用合并居中和绘制斜线,文本框等工具完成表头的制作。

(三)进一步设置“文件”菜单的“页面设置”和“打印”等其他选项,若要求每页上部都具有相同的斜线表头,则应在“页面设置”中的“工作表”选项卡中找到“顶端标题行”,指定来所做的表头,即可完成VFP的数据在Excel中以多维数据表的形式输出。

四、结束语:

我们可以通过上述提到三种方法实现把Visual F oxpro的数据传递给Excel,由Excel来实现格式复杂的报表输出。前两种通过较为复杂的编程实现,最后一种进行了数据存储格式的转换而实现。上述方法均在Visual F oxPro6.0和Excel2000中调试通过。

参考文献:

[1]翁正科.Visual F oxPro数据库开发教程(第二版)[M].北京:清华大学出版社,2003.

[2]萨师煊,王珊.数据库概论(第三版)[M].北京:高等教育出版社,2000.

审稿:张建国

431

相关主题