注册 登录
编程论坛 VFP论坛

Dbf文件转换为Excel的方法

xuminxz 发布于 2021-08-28 21:52, 5848 次点击
近期常有人问DBF如何转Excel,今做了个表单可解决这一问题。要求VFP9环境,比较完整的Excel(支持VBA)。
可根据Excel的版本,导出多记录文件。当记录超过Sheet的上限,自动导入到下一个表,可防止字符串前面的0丢失。防止身份证等长字符串变成小数。可选择导出的字段。只在I5、Win10、Excel2016上测试过。1500000条记录、300M文件测试过,速度不快5分钟。
只有本站会员才能查看附件,请 登录

VBA中的
.TextFileColumnDataTypes = Array(2, 2, 1, 1, 2,9, 1)
不知VFP如何调用,如能解决,程序效率将更高。
只有本站会员才能查看附件,请 登录


如果没有非法汉字(半个汉字)可以用以下命令。可导出备注字段。
CURSORTOXML("已经打开的表别名或工作区名","XML文件名.xml", 3, 512+16,记录数,"XSD文件名")
说明:1、XML与XSD名可以任意,建议与表同名。
2、记录数说明
0——复制所有记录
其它——从当前记录开始的记录数。
记录数最大数Excel2003及以前为2^16-1,2007及以后2^20-1 (-1是标题行。)
指定数大于实际记录数,按实际数复制。

[此贴子已经被作者于2021-9-2 14:00编辑过]

24 回复
#2
nbwww2021-08-29 07:52
学习
#3
huasinstamps2021-08-29 16:41
我用winrar解压怎么显示格式未知或数据已损坏
#4
xuminxz2021-08-29 17:12
回复 3楼 huasinstamps
我的winrar(5.7)版本有点高改为zip格式
只有本站会员才能查看附件,请 登录




[此贴子已经被作者于2021-8-29 17:19编辑过]

#5
sylknb2021-08-30 08:44
导出后的EXCEL表没有一点内容?
#6
xuminxz2021-08-30 09:21
EXCEL版本?只测试了2016
#7
wengjl2021-08-30 09:22
只有本站会员才能查看附件,请 登录

打开表单时提示:如上图
#8
nbwww2021-08-30 13:38
我也报告一下    EXCEL文件为空  我的也是EXCEL2016的
#9
laowan0012021-08-30 14:49
从7楼的截图看,好像是dbf文件选错了
我测试很顺利,已经把我的程序改了。
这是我至今为止见到的最好的方法,效率比复制粘贴要快,关键是不报错了,谢谢楼主,多谢多谢!!!

说明,用楼主的提供的程序,导出了zdlx.dbf,后又自己生成了更大数据量的文件,导出都很顺利!!!

[此贴子已经被作者于2021-8-30 14:50编辑过]

#10
xuminxz2021-08-30 15:17
command1.click中
Use (_dbfnm) In 0应该为
Use (_fnm) In 0
#11
wengjl2021-08-30 15:26
以下是引用laowan001在2021-8-30 14:49:21的发言:

从7楼的截图看,好像是dbf文件选错了
我测试很顺利,已经把我的程序改了。
这是我至今为止见到的最好的方法,效率比复制粘贴要快,关键是不报错了,谢谢楼主,多谢多谢!!!

说明,用楼主的提供的程序,导出了zdlx.dbf,后又自己生成了更大数据量的文件,导出都很顺利!!!


你判错了,是因为我用的是VFP8.0,所以无法打开
#12
xuminxz2021-08-30 16:18
回复 8楼 nbwww
文件(夹)名中有空格,或有备注字段,正在解决……

[此贴子已经被作者于2021-8-30 16:19编辑过]

#13
xuminxz2021-08-30 16:51
文件(夹)名中有空格的问题已经解决。备注字段暂时无法导出,如果需要可以逐记录向Excel表中写,但速度可能比较慢。
只有本站会员才能查看附件,请 登录
#14
xuminxz2021-08-30 17:42
回复 7楼 wengjl
VFP7.0、8.0可以用
use dbf2xcel.scx
go 23
打开Properties将
Alignment = 2
改为Alignment = 1或删除、或改为你的版本的默认值(我没用过7、8不知道是什么)试试。


[此贴子已经被作者于2021-8-30 18:01编辑过]

#15
xuminxz2021-08-30 22:10
经测试,将DBF导出到其它文件,最好的方法还是用COM,逐个记录、逐个字段地写入。其它方法都会丢数据。(主要是数据中有非常可视字符时。)
#16
laowan0012021-08-31 08:10
回复 11楼 wengjl
知道了就好
#17
wengjl2021-08-31 08:19
以下是引用xuminxz在2021-8-30 17:42:45的发言:

VFP7.0、8.0可以用
use dbf2xcel.scx
go 23
打开Properties将
Alignment = 2
改为Alignment = 1或删除、或改为你的版本的默认值(我没用过7、8不知道是什么)试试。

谢谢!按照您的提示,改为1,就能打开了,如图示
只有本站会员才能查看附件,请 登录
#18
Bc_Newboy2021-08-31 08:25
#19
xuminxz2021-09-08 10:44
如果没有非法汉字(半个汉字)可以用以下命令。(包括备注字段也可正常导出)
CURSORTOXML("已经打开的表别名或工作区名","XML文件名.xml", 3, 512+16,记录数,"XSD文件名")
1、XML与XSD名可以任意,建议与表同名。
2、记录数
0——复制所有记录
其它——从当前记录开始的记录数。
记录数最大数Excel2003及以前为2^16-1,2007及以后2^20-1 (-1是标题行。)
指定数大于表中实际记录数,按实际数复制,不会出错。
#20
schtg2021-09-09 05:49
好!
#21
如歌岁月2021-09-22 16:48
学习了
#22
cz30566082022-09-09 21:19
学习了
#23
tsg20052022-09-14 08:58
回复 楼主 xuminxz
学习一下,收藏
#24
aqyejun2022-09-14 09:56
#25
talkrobin2022-09-15 10:18
学习了,感谢分享知识
1