论文部分内容阅读
摘要:介绍了VFP数据表文件(.DBF)与Excel数据表(.XLS)间数据的相互转换,并对转换中存在的问题进行分析,提出解决的方法。
关键词:Visual FoxPro软件;Excel软件;数据文件;数据转换
中图分类号:TP311.132 文献标识码:A文章编号:1009-3044(2008)35-2396-02
The Data Conversion of DBF Files and Excel Files
LUO Zheng-sheng
(Panzhihua University, Panzhihuai 617000, China)
Abstract: This paper introduces the data conversion ofVFP Table (.DBF) and Excel Sheet (.XLS), analyzes the problems during conversion process and puts forward its solutions.
Key words: visual foxPro software; excel software; data files; data conversion
DBF文件是VFP(Visual FoxPro)的数据表文件,VFP是一种关系型数据库管理系统,具有强大的数据处理功,不仅是一个信息管理系统的编程平台,而且提供了以命令方式操作处理数据的功能,在管理工作中得到广泛应用;Excel文件是指Microsoft Excel软件生成的电子表格文件,Microsoft Excel是微软公司办公系列软件(Microsoft Office)中一个优秀的电子表格处理软件,具有强大的制表功能,在操作界面、公式运算、图表等方面有着独到的优势,为广大办公应用人员所熟悉和使用,正是由于他们功能间存在的差异,两种软件产生的数据常常需要进行转换,以达到方便、高效处理数据的目的。
1 转换的方法及其存在的问题
Visual FoxPro与Microsoft Excel都是微软件公司的软件产品,在各自软件中提供了数据间进行相互转换的功能。
1) 将数据库表文件向Excel表格文件转换(dbf→xls),可以通过:
① 在Excel中直接打开DBF数据文件或者利用“数据”菜单下“导入外部数据”实现数据转换;
② 利用Visual FoxPro的“导出”功能来实现数据转换。
2) 将Excel表格文件向数据库表文件转换(xls→dbf),可以通过:
① Excel的“另存为”所指定的文件类型(DBF)实现数据转换;
② 利用Visual FoxPro中的“导入”功能来实现数据转换。但是,在将数据库文件向Excel表格文件转换的过程中,会出现如下问题:
问题一:如果在Excel中通过直接打开或利用导入外部数据的方法,要求这种DBF文件只能是EXCEL导出来的DBF文件才行,否则不能正确导入。
问题二:利用Visual FoxPro的“导出”功能(或用COPY TO filename.XLS TYPE XL5 命令)来实现数据转换,则只能转换16384条记录,多余的记录不能转换成Excel文件。
2 问题分析及解决方案
1) 对于问题一:通过对Excel导出来的DBF文件和用Visual FoxPro建立产生的DBF文件进行分析,两种方式产生的DBF文件是有区别的:由Excel导出来的DBF文件第一个字节为03(十六进制),而用Visual FoxPro建立产生的DBF文件第一个字节为30(十六进制),而Excel在识别DBF文件的具体格式时只辨认第一个字节,正是由于第一个字节的不同,导致了用Visual FoxPro建立产生的DBF文件不导入到Excel数据表中。可以通过如下方法对其进行修改:
方法一:使用DEBUG命令:
-Nfilename.DBF
-L
-E 100 03
-W
-Q
但要注意:使用DEBUG命令只对较小的文件起作用,对于较大的数据表文件,运行L命令时,会出现“Insufficient memory(不足的内存)”错误。
方法二:使用WinHex等十六进制编辑工具,打开文件进行修改,即将文件的第一个字节30(十六进制)改为03(十六进制)后保存即可。
经过上述修改后的DBF文件可以成功地将DBF文件导入到Excel文件中,但此修改方法仅适用于不包括备注型/通用型等复杂数据类型的DBF数据表文件。如果DBF数据表文件包含复杂数据类型,修改后的文件在Excel中打开时可能会产生数据丢失现象。
2) 对于问题二:这是由于Visual FoxPro软件系统中,针对的是以前的Excel4.0的工作表格式来进行数据的导出,即只容许16384行的数据表格,因此在使用Visual FoxPro的“导出”功能时,如果数据记录数大于16384条记录时,则需要采用另外的方式进行转换。
方法一:借助于其它格式文件(如txt文件),进行二次转换
① 用COPY TO filename.TXT TYPE SDF 命令导出成标准格式文本文件。
② 在用Excel导入数据,从文本文件导入。数据?导入外部数据?导入数据,然后在对话框中选择文本文件。
方法二:使用编程方法来实现DBF向XLS数据转换
程序如下:DBFtoXLS.prg
SET TALK OFF
CLEAR
ACCEPT "请输入要转换的数据表名:" TO FoxTable
USE
关键词:Visual FoxPro软件;Excel软件;数据文件;数据转换
中图分类号:TP311.132 文献标识码:A文章编号:1009-3044(2008)35-2396-02
The Data Conversion of DBF Files and Excel Files
LUO Zheng-sheng
(Panzhihua University, Panzhihuai 617000, China)
Abstract: This paper introduces the data conversion ofVFP Table (.DBF) and Excel Sheet (.XLS), analyzes the problems during conversion process and puts forward its solutions.
Key words: visual foxPro software; excel software; data files; data conversion
DBF文件是VFP(Visual FoxPro)的数据表文件,VFP是一种关系型数据库管理系统,具有强大的数据处理功,不仅是一个信息管理系统的编程平台,而且提供了以命令方式操作处理数据的功能,在管理工作中得到广泛应用;Excel文件是指Microsoft Excel软件生成的电子表格文件,Microsoft Excel是微软公司办公系列软件(Microsoft Office)中一个优秀的电子表格处理软件,具有强大的制表功能,在操作界面、公式运算、图表等方面有着独到的优势,为广大办公应用人员所熟悉和使用,正是由于他们功能间存在的差异,两种软件产生的数据常常需要进行转换,以达到方便、高效处理数据的目的。
1 转换的方法及其存在的问题
Visual FoxPro与Microsoft Excel都是微软件公司的软件产品,在各自软件中提供了数据间进行相互转换的功能。
1) 将数据库表文件向Excel表格文件转换(dbf→xls),可以通过:
① 在Excel中直接打开DBF数据文件或者利用“数据”菜单下“导入外部数据”实现数据转换;
② 利用Visual FoxPro的“导出”功能来实现数据转换。
2) 将Excel表格文件向数据库表文件转换(xls→dbf),可以通过:
① Excel的“另存为”所指定的文件类型(DBF)实现数据转换;
② 利用Visual FoxPro中的“导入”功能来实现数据转换。但是,在将数据库文件向Excel表格文件转换的过程中,会出现如下问题:
问题一:如果在Excel中通过直接打开或利用导入外部数据的方法,要求这种DBF文件只能是EXCEL导出来的DBF文件才行,否则不能正确导入。
问题二:利用Visual FoxPro的“导出”功能(或用COPY TO filename.XLS TYPE XL5 命令)来实现数据转换,则只能转换16384条记录,多余的记录不能转换成Excel文件。
2 问题分析及解决方案
1) 对于问题一:通过对Excel导出来的DBF文件和用Visual FoxPro建立产生的DBF文件进行分析,两种方式产生的DBF文件是有区别的:由Excel导出来的DBF文件第一个字节为03(十六进制),而用Visual FoxPro建立产生的DBF文件第一个字节为30(十六进制),而Excel在识别DBF文件的具体格式时只辨认第一个字节,正是由于第一个字节的不同,导致了用Visual FoxPro建立产生的DBF文件不导入到Excel数据表中。可以通过如下方法对其进行修改:
方法一:使用DEBUG命令:
-Nfilename.DBF
-L
-E 100 03
-W
-Q
但要注意:使用DEBUG命令只对较小的文件起作用,对于较大的数据表文件,运行L命令时,会出现“Insufficient memory(不足的内存)”错误。
方法二:使用WinHex等十六进制编辑工具,打开文件进行修改,即将文件的第一个字节30(十六进制)改为03(十六进制)后保存即可。
经过上述修改后的DBF文件可以成功地将DBF文件导入到Excel文件中,但此修改方法仅适用于不包括备注型/通用型等复杂数据类型的DBF数据表文件。如果DBF数据表文件包含复杂数据类型,修改后的文件在Excel中打开时可能会产生数据丢失现象。
2) 对于问题二:这是由于Visual FoxPro软件系统中,针对的是以前的Excel4.0的工作表格式来进行数据的导出,即只容许16384行的数据表格,因此在使用Visual FoxPro的“导出”功能时,如果数据记录数大于16384条记录时,则需要采用另外的方式进行转换。
方法一:借助于其它格式文件(如txt文件),进行二次转换
① 用COPY TO filename.TXT TYPE SDF 命令导出成标准格式文本文件。
② 在用Excel导入数据,从文本文件导入。数据?导入外部数据?导入数据,然后在对话框中选择文本文件。
方法二:使用编程方法来实现DBF向XLS数据转换
程序如下:DBFtoXLS.prg
SET TALK OFF
CLEAR
ACCEPT "请输入要转换的数据表名:" TO FoxTable
USE