| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4344 人关注过本帖
标题:求助,怎样用VisualFoxpro程序把dbf格式的数据截成两段,转化成两个excel表 ...
只看楼主 加入收藏
wds106
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-9-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
求助,怎样用VisualFoxpro程序把dbf格式的数据截成两段,转化成两个excel表格?
各位前辈好,我刚接触VisualFoxpro不久,遇到了一个难题(对我来说),因为excel表格最多只容纳60000行数据,直接用VF导出的excel文件只有16000多条,怎样把过长的dbf文件转化成两个excel表格,每个有60000这样呢?先谢谢了。
搜索更多相关主题的帖子: dbf excel VisualFoxpro 表格 数据 
2009-09-13 21:00
hgfeng1984
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:139
专家分:513
注 册:2006-3-26
收藏
得分:15 
AddOleNew=CREATEOBJECT('EXCEL.APPLICATION')
AddOleNew.Workbooks.add
 
SELECT * FROM test WHERE 商品类型='器械仪器2' INTO CURSOR temp  &&可以加上条件选择多少记录
_vfp.DataToClip(,,3)
AddOleNew.Worksheets("sheet1").Activate
AddOleNew.ActiveSheet.Paste
 
SELECT * FROM test WHERE 商品类型='器械仪器3' INTO CURSOR temp &&可以加上条件选择多少记录
_vfp.DataToClip(,,3)
AddOleNew.Worksheets("sheet2").Activate
AddOleNew.ActiveSheet.Paste
 
 
AddOleNew.ActiveWorkbook.Saveas(PUTFILE('保存为(&N):','NewBook.xls','xls'))
AddOleNew.Workbooks.close
AddOleNew.quit


--这是一个excel文件中存为多个工作表的方法,不是存为多个excel文件,当然存为多个excel文件也可以.

[ 本帖最后由 hgfeng1984 于 2009-9-14 10:57 编辑 ]
2009-09-13 23:00
sd_tysd
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:81
专家分:319
注 册:2009-7-23
收藏
得分:5 
回复 楼主 wds106
首先打开DBF表
use 表名
直接用COPY 复制到EXCEL文件
COPY TO EXCEL文件名 XL5 FIELDS 要拆分字段名
如:COPY TO 学生成绩 XL5 FIELDS 姓名,数学,语文,化学,体育
在用同样方法复制第二个EXCEL表

[ 本帖最后由 sd_tysd 于 2009-9-13 23:42 编辑 ]
2009-09-13 23:39
wds106
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-9-13
收藏
得分:0 
谢谢两位,但是因为初学,第一个看不懂,不知道如何下手,第2个导出还是只有16000多条。。。。。
但是还是谢谢大家
2009-09-14 12:32
hgfeng1984
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:139
专家分:513
注 册:2006-3-26
收藏
得分:0 
*把这段代码复制保存为一个prg文件,和你的数据表放一个目录,运行后看结果.

AddOleNew=CREATEOBJECT('EXCEL.APPLICATION')  
AddOleNew.Workbooks.add  
 
SELECT * FROM 你的表名 WHERE recno()>100 INTO CURSOR temp  &&"你的表名"换成你的表名,取数据表前100个记录到excel的第一个工作表.
_vfp.DataToClip(,,3)  
AddOleNew.Worksheets("sheet1").Activate  
AddOleNew.ActiveSheet.Paste  
 
SELECT * FROM 你的表名 WHERE recno()>200 INTO CURSOR temp &&"你的表名"换成你的表名,取数据表前200个记录到excel的第一个工作表.
_vfp.DataToClip(,,3)  
AddOleNew.Worksheets("sheet2").Activate  
AddOleNew.ActiveSheet.Paste  
 
 
AddOleNew.ActiveWorkbook.Saveas(PUTFILE('保存为(&N):','NewBook.xls','xls'))  
AddOleNew.Workbooks.close  
AddOleNew.quit
2009-09-14 12:45
sd_tysd
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:81
专家分:319
注 册:2009-7-23
收藏
得分:0 
回复 4楼 wds106
以前没看明白,原来是太长,倒不出来。
GO 1
COPY TO 学生成绩 XL5 next 15000
go 15001
COPY TO 学生成绩1 XL5 next 15000
go 30001
COPY TO 学生成绩2 XL5 next 15000
go 45001
COPY TO 学生成绩3 XL5 next 15000
go 60001
COPY TO 学生成绩4 XL5 next 15000

如果还有继续将记录指向增加15000,EXCEL 表名也要变更。go 15001 是将记录指针移到15001。COPY TO 学生成绩2 XL5 next 15000 是将此时指针所在的记录向下15000条记录复制到 《学生成绩2 》EXCEL 表中。


[ 本帖最后由 sd_tysd 于 2009-9-14 19:38 编辑 ]
2009-09-14 15:31
wds106
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-9-13
收藏
得分:0 
谢谢两位的热情帮助,问题已得到解决,两个办法都有效果,但是hgfeng1984的方法比较“傻瓜”,呵呵一运行就可以了,比较适合我这样的懒人,但sd_tysd的方法更适合我这样的菜鸟,因为现在在用hgfeng1984的方法,故给15分,请sd_tysd勿怪,最后再次感谢两位给予的帮助,谢谢!
2009-09-15 16:00
fulunye
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-8-6
收藏
得分:0 
1先创建两个新字段,2用字符拆分语句将要拆分的字段拆分后分别替换,3ok了
2009-09-22 16:46
快速回复:求助,怎样用VisualFoxpro程序把dbf格式的数据截成两段,转化成两个ex ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016805 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved