回 帖 发 新 帖 刷新版面

主题:我想实现用foxpro程序将一个文件夹下的一大批DBF文件都转换成excel文件

我想实现用foxpro程序将一个文件夹下的一大批DBF文件都转换成excel文件

我自己的处理方法是首先用excel宏将这个文件下的dbf'文件名都抓取出来,形成一张表,另存为dbf表格,叫做sheetname,其中只有个字段filename。
以下是我自己写个foxpro程序,但是未能实现我想要的功能,请你们帮我看看问题出在哪里?
use sheetname
do while !eof()
sourcename= filename
USE &sourcename
COPY  to sourcename+".xls" type xls
ENDdo

回复列表 (共3个回复)

沙发

题意还是不很明白!?

假设题意如下:当前文件夹中有1.dbf、2.dbf等数目不知的DBF,需要转换成1.xls、2.xls等对应的EXCEL表,可以这样干:
1、使用ADIR函数得到数组,其中就有文件名等信息;
2、循环数组,对每个DBF先use,再copy to XLS这样就好了
好象不需要用到excel

PS:楼主代码可能存在的问题:假定我们用DBF进行循环的话,每次应该SKIP一下,excel的没有这样用过,但是估计也应该SKIP或者类似功能的来一下都对!

板凳


我已经解决了。我的题意就你说的将1.dbf 2.dbf 3.dbf 转换成1.xls 2.xls 3.xls
我自己写的程序如下:
sele 1
use sheetname
FOR i = 1 TO RECCOUNT()
GO i
sourcename= filename
SELECT 2
USE &sourcename
COPY  TO LEFT(sourcename,LEN(sourcename)-4)+".xls" type fox2x
SELECT 1
endfor

其中sheetname存放的的是1.dbf,2.dbf,3.dbf等要转换的dbf文件名
我的这段程序所生成的excel文件会和dbf文件出在同一个根目录下,如果我想放在根目录下的excel子目录中,应该怎么写。

3 楼

[quote]
我已经解决了。我的题意就你说的将1.dbf 2.dbf 3.dbf 转换成1.xls 2.xls 3.xls
我自己写的程序如下:
sele 1
use sheetname
FOR i = 1 TO RECCOUNT()
GO i
sourcename= filename
SELECT 2
USE &sourcename
COPY  TO LEFT(sourcename,LEN(sourcename)-4)+".xls" type fox2x
SELECT 1
endfor

其中sheetname存放的的是1.dbf,2.dbf,3.dbf等要转换的dbf文件名
我的这段程序所生成的excel文件会和dbf文件出在同一个根目录下,如果我想放在根目录下的excel子目录中,应该怎么写。

[/quote]
下面这样写就好了(VFP9.0通过),不需要事先建立sheetname!


CLOSE ALL 
ADIR(dbfnames,'*.dbf')
FOR i=1 TO ALEN(dbfnames,1)
    USE &dbfnames(i,1)
    COPY TO 'd:\temp\'+JUSTSTEM(dbfnames(i,1)) XLS 
ENDFOR

我来回复

您尚未登录,请登录后再回复。点此登录或注册