注册 登录
编程论坛 VFP论坛

大于5万条记录的dbf文件,如何转换为excel文件?

minman 发布于 2021-05-17 14:25, 6406 次点击
大于5万条记录的dbf文件,如何转换为excel文件?因为copy to type XL5只能转换大约1万6千多条,所以这个不能用。
36 回复
#2
minman2021-05-17 14:50
我现在的思路是先copy to txt 文件再用excel打开,saveas为xls文件。这样速度快,但麻烦的是出现科学记数法。
#3
吹水佬2021-05-17 15:11
可以设置数值型格式
#4
minman2021-05-17 15:24

先设置好的话,要用导入txt文件到excel 里的办法。可否写一下代码?

[此贴子已经被作者于2021-5-17 15:26编辑过]

#5
吹水佬2021-05-17 15:51
给点数据测试
#6
sdta2021-05-17 15:59
* 文本文件中共有678956条记录,共6个字段,25942KB
_CLIPTEXT = FILETOSTR("D:\AA\BB.txt")
oExcel = CREATEOBJECT('Excel.Application')
oExcel.Workbooks.Add(-4167)
oExcel.Visible = .T.
oExcel.Columns(1).NumberFormatLocal = "@"
oExcel.ActiveSheet.Cells(1, 1).PasteSpecial
_CLIPTEXT = ""
#7
minman2021-05-17 16:06
倒数第三行只是对第一列设置成文本格式吗?其他列呢?
#8
sdta2021-05-17 16:10
以下是引用minman在2021-5-17 16:06:21的发言:

倒数第三行只是对第一列设置成文本格式吗?其他列呢?

第1列原来数据为纯数字字符串,导入EXCLE中为科学记数的数据,设置为文本格式后可以正常显示为数字字符串,其它列根据需要设置成相应的格式。
#9
minman2021-05-17 16:13
那我现所有列均预先设成字符格式,column里参数怎么写?
#10
sdta2021-05-17 16:13
在EXCEL中当数值型数据达到12位时,数值型数据才可能显示为科学记数的数据
#11
sdta2021-05-17 16:14
没有数据,别人怎么知道你原来的数据的类型是什么
Columns(1) 1 代表第1列

[此贴子已经被作者于2021-5-17 16:16编辑过]

#12
laowan0012021-05-17 23:01
这么大的文件使用复制方法,估计会很慢的
#13
radiofan2021-05-18 08:06
以下是引用minman在2021-5-17 14:25:12的发言:

大于5万条记录的dbf文件,如何转换为excel文件?因为copy to type XL5只能转换大约1万6千多条,所以这个不能用。


可以考虑分段转换,然后再合并。
#14
yilance2021-05-18 10:49
我都是把表拆成几个表
分开导出,然后再合并起来
虽然笨,但是很实用
#15
xuminxz2021-05-18 15:37
先导入到ACCESS中,再导到Excel中
https://bbs.bccn.net/thread-494070-1-1.html
#16
schtg2021-05-18 19:10
好像有人对此专门有一个解决办法,待我回家后搜索一下我的电脑再回复哈,^_^
#17
sdta2021-05-20 22:22
看下这个网站的帖子是否有用:https://www.
#18
dbf永动机2022-08-30 13:16
作为vfp小白菜,刚好知道这个,可以用 copy to 表名 fox2 复制一份后缀为大写DBF的表,然后直接把后缀改成xls就行了,去试试吧。
#19
aqyejun2022-08-30 15:04
COPY to 文件名.xls type foxplus

关键是加上“foxplus”
#20
aqyejun2022-08-30 15:10
回复 楼主 minman
试试:COPY to 文件名.xls type foxplus
#21
厨师王德榜2022-09-01 17:14
回复 17楼 sdta
谢谢前辈提供的资料.
看了那个罗马尼亚大神的代码,这个比较牛,他是相当于硬输出了一个xml的文档,再把xml周边的配置都加上,最后压缩,直接生成了一个符合规范的excel2007格式的文件.
不过,感觉他这样做,是在自己造轮子.或许,大牛就喜欢这样做吧.

我现在的做法,是用VBA写了一个插件,配合ODBC驱动,直接在excel界面中,把DBF读取进来,再另存...这样的话,一个最新格式的DBF-->EXCEL就生成好了.
效率还可以,但是缺点就是离不开ODBC驱动.
只有本站会员才能查看附件,请 登录
#22
zhken2022-09-01 22:17
跟着大佬开开眼界
#23
吹水佬2022-09-02 10:55
以下是引用minman在2021-5-17 14:50:28的发言:

我现在的思路是先copy to txt 文件再用excel打开,saveas为xls文件。这样速度快,但麻烦的是出现科学记数法。

DBF记录的最大数10亿,EXECL表的最大行数?

#24
laowan0012022-09-02 11:04
#25
dbf永动机2022-09-05 14:42
copy to fox2 表名
把生成的DBF表后缀成xls即可,简简单单,没有那么复杂。
#26
吹水佬2022-09-05 16:18
以下是引用dbf永动机在2022-9-5 14:42:34的发言:

copy to fox2 表名
把生成的DBF表后缀成xls即可,简简单单,没有那么复杂。

那么神奇!
给个示例文件代码看看
#27
kimhoo2022-09-05 17:15
学习了
#28
dbf永动机2022-09-06 13:10
回复 26楼 吹水佬
我的数据表都是有用的,不能外传,你可以自己找个大点的数据表转一下试试看。
#29
wengjl2022-09-06 14:47
以下是引用minman在2021-5-17 14:25:12的发言:

大于5万条记录的dbf文件,如何转换为excel文件?因为copy to type XL5只能转换大约1万6千多条,所以这个不能用。


你用的是VFP6.0
换VFP8 或 VFP9 就不存在1万6千的限制了
#30
aqyejun2022-09-06 17:10
试试:COPY to 文件名.xls type foxplus
这个无限制!
#31
sostemp2022-09-06 17:22
回复 30楼 aqyejun
也要看EXCEL版本单sheet是否支持的。
#32
吹水佬2022-09-07 07:36
以下是引用dbf永动机在2022-9-6 13:10:53的发言:

我的数据表都是有用的,不能外传,你可以自己找个大点的数据表转一下试试看。

不是要实际数据表,只是想知道“把生成的DBF表后缀成xls即可”,怎样缀成xls
#33
dbf永动机2022-09-07 10:16
回复 32楼 吹水佬
说的很明白啊,找一个超过最大限制数据量的表,命令窗口直接键入copy to 新表名 fox2 ,就会复制出一个DBF表,直接把后缀重命名改成xls就行了,你去试试不就好了
#34
吹水佬2022-09-07 11:08
以下是引用dbf永动机在2022-9-7 10:16:22的发言:

说的很明白啊,找一个超过最大限制数据量的表,命令窗口直接键入copy to 新表名 fox2 ,就会复制出一个DBF表,直接把后缀重命名改成xls就行了,你去试试不就好了

copy to ...... to EXCEL 不能解决DBF记录超过EXCEL行数限制
以下是引用吹水佬在2022-9-2 10:55:02的发言:
DBF记录的最大数10亿,EXECL表的最大行数?

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

程序代码:
CREATE DBF tt (f1 I, f2 C(20))
FOR i=1 TO 100000
    INSERT INTO tt VALUES (i,PADL(i,20,"0"))
ENDFOR
SELECT * FROM tt
DELETE FILE ttFox2x.xls
COPY TO ttFox2x FOX2X
RENAME ttFox2x.dbf TO ttFox2x.xls

#35
sostemp2022-09-07 11:32
回复 34楼 吹水佬
对,所以前面几位说的 与 FOX2X 或 foxplus  没多大关系。

前面我已回答过了,是要看EXCEL版本单sheet是否支持的最大行数。

附说一句:2003版单sheet最大行数是65536行。Excel2007后版本单sheet最大行数是1048576行。


#36
dbf永动机2022-09-07 13:45
回复 35楼 sostemp
office版本是另一个问题,楼主问的超过5万行,很显然他的需求是超出5万行,但是最多超过多少万行没说,谁没事用excel去处理超过百万行的数据呢,至少fox2 可以解决几万,几十万行的数据转换,实在超过百万行,非要转excel,那就分批转呗
#37
aqyejun2022-09-07 14:52
主要是要看系统对应的安装excel版本问题
1