芮瑞
摘 要:EXCEL电子表格具有简单灵活、功能强大等优点,因此受到了广泛的使用,其图表制作能力突出;VFP作为常用的界面编辑和数据处理软件,提供了亲和度较高的操作方式,在数据管理方面也呈现出稳定高效的优点。文章着眼于这两种常用的优秀软件,分析其数据格式的特点,并探讨两种软件之间数据共享与传输的可能性,具有一定的现实意义。
关键词:EXCEL;VFP;数据传输
目前Office办公软件已经得到了广泛的应用,而其中的EXCEL软件作为制表专用软件,由于其便捷的操作界面,强大的图标编辑功能和数据处理功能更是得到了绝大多数用户的青睐,已经成为了该类型软件中的代表作;与此同时,大多数桌面型数据库系统采用的是Visual Foxpro(VFP)软件作为其数据库平台来进行开发和设计,对于研发人员而言,VFP是相对简单的开发工具,但是对于大多数使用者而言则稍显困难,尤其是在数据处理分析和图表制作的过程中,不少用户反映对于VFP的操作方式不熟悉,很难掌握,而对于EXCEL则能够轻松驾驭,因此,文章从几个方面研究了这两种常用的办公软件的数据库系统之间的数据通信与转换问题,具有明显的现实意义。
1 最迅速便捷地由VFP数据表转换成EXCEL表
(1)进入VFP系统操作使用VFP系统软件打开现存的VFP表;(2)在“显示”菜单中,选择“浏览”项,已浏览的模式打开数据库表;(3)在“文件”菜单中,讲打开的该表另存为HTML,即将该表保存成网页形式;(4)Excel支持打开网页文件,可在刚才的文件上单击右键,选择使用EXCEL打开,或者先打开EXCEL,“文件”菜单下选择打开刚才保存的文件;(5)如果发现文件格式或内容需要修改,则可在EXCEL下进行调整,完成后将该文件保存成EXCEl文档格式即可。该方法可针对大多数数据格式进行兩种软件之间的转换,如数值型、文本型等,但对于通用型的数据,该方法则不适用。
2 最直接的由Excel转换成VFP数据表
该方法本质上就是上一方法的逆操作,即利用文件后缀名改变文件对应的打开软件。(1)进入EXCEL软件,打开某一EXCEl表,在“文件”菜单下选择另存为后缀名为.dbf的文档,即数据库文档;(2)用VFP 打开该表,查看方式为浏览方式,会发现系统自动的将原EXCEl表的表头转换为现在数据库表的字段名;(3)调整后保存即可。
3 通过导出和导入功能实现数据转换
3.1 数据由VFP表导出到EXCEL表
(1)打开VFP数据表后,建立Excel对象;(2)在Excel.对象中建立工作簿和工作表;(3)对该表进行内容输入和调整;(4)将数据表中的记录数据放入Excel工作簿的单元格中。程序代码如下:
set default to
use
myexcel.visible=.t.;myexcel.workbooks.add
myexcel.sheets.add &&添加一工作表,如表名为test
myexcel. cells(1,1).value=
myexcel. cells (3,1).value="
&&填写表头,本例中表头名为"record1,record2…"
myexcel. cells(3,2).value="
………………
i= 0;scan all;myexcel.cells(4+i,1).value=
&& 为record1字段下的第一行单元格输入一个值
myexcel.cells(4+i,2).value=
i= i+1;endscan
执行完成上述代码后,关闭excel即可。用此方法同样只能针对大多数数据格式的转换,对通用型数据格式仍旧不支持。
3.2 由excel表导入到vfp表
此方法依旧是前一方法的逆操作,首先建立excel兑现,随后建立工作薄对象打开excel文件,再打开数据库表,利用sql语句将excel的属性value与数据库表中的字段联系起来导入数据。
下例中完成的操作为将excel表导入到某一数据库表文件中。代码如下:
set default to
obexcel= createobject(“excel.application“)
obexcel.visible=.t.obexcel.workbooks.open(test.xls)
use
for i= 1 t0 currow
insert into
values(obexcel. cells(i,1).vale;obexcel.cells(i,2).vale,;
obexcel.cells(i,3).vale,;endfor
4 动态数据图的建立
vfp只能支持静态的数据图表,而对动态图标无能为力,利用excel可以很好的弥补这一缺陷。具体方法是先通过上文所述的方法将数据库表的数据导出到excel工作表中,然后打开excel,利用其自带的charts方法为该表添加统计图,代码为:
myexcel= createobject (excel. application)
&& myexcel为excel 的对象名
myexcel.visible=.t.&& 显示该excel对象
myexcel.workbooks. add
myexcel.activeworkbook. sheets(1).
cells(1,1).value=record1;myexcel.cells(1,2).value=record2
clear all
set default to d:\exam
use test.dbf
currow=myex cel. activesheet. rows. count
rangs= a1:+g+alltrim(str(currow) )
myexcel.rang(rangs).select
myexcel.charts. add
myexcel.activesheet.printpreview
通过以上步骤,就可以实现VFP中图标与EXCEl的动态链接,实现了动态图标的效果,可将上述代码放入一事件代码框架中,如click()事件等,通过用户的点击操作自动执行。
参考文献
[1]王毓珠,马希荣.Visual Foxpro程序设计[M].北京:人民邮电出版社,2005.
[2]何小苑,王树勇.EXCEL在VFP软件开发中的应用[J].广东水利电力职业技术学院学报,2004,6.