主题:关于EXEL文件转换问DBF的问题
sdzph
[专家分:50] 发布于 2008-04-11 13:10:00
各位老师,我利用下面代码进行了 EXECL 文件到 DBF 的转化~
代码如下:
Import From Getfile('xls') Type XLS &&导入的DBF表的第一条记录为XLS的第一行。
Copy To test.Dbf For Recno()>1 &&复制除第一条记录的所有记录到test.dbf。
Go Top
lnFieldNum=Fcount() &&字段个数
lcString='Select '
For lnCount=1 To lnFieldNum
lcString=lcString+Field(lnCount)+' As '+Alltrim(Evaluate(Field(lnCount)))+','
Endfor
lcString=Left(lcString,Len(lcString)-1)+' from test into dbf ttt2 '
&lcString &&执行select 查询
不知道那里出错了,反正是有的行有的不行
现在的问题是:
1.在EXCEL里面第一列作为DBF表的字段,不能超过5个汉字,否则就出错。
2.有的EXCEL转换时候会提示:函数参数的值,类型或者数目无效。
3.有的EXCEL转换时候会提示:不正确的EXEL类型
请各位老师指正和完善~~谢谢!
回复列表 (共10个回复)
沙发
sdzph [专家分:50] 发布于 2008-04-12 18:00:00
有那位老师知道问题出那里吗?还望指教啊~~
板凳
sdzph [专家分:50] 发布于 2008-04-15 17:55:00
这个问题已经困扰我很多天了,有那位老师给指点一下啊
3 楼
myww [专家分:1190] 发布于 2008-04-15 22:21:00
请你参阅高老师的帖子:
http://bbs.pfan.cn/post-214768.html
4 楼
sdzph [专家分:50] 发布于 2008-04-15 23:30:00
myww 老师,你给我的帖子是从VF表到EXCEL的转换,我的问题是EXCEL文件到DBF表的问题~o~
5 楼
jinlonggao [专家分:17130] 发布于 2008-04-16 07:33:00
[url=http://bbs.pfan.cn/post-208186.html]从EXCEL到DBF[/url]
6 楼
martine [专家分:4950] 发布于 2008-04-16 07:49:00
EXCEL转DBF 我认为要解决的问题主要是:
1、绕过EXcel 和 VFP 版本之间的不匹配问题, 所以尽量不要使用 COPY 等, 使用高老师的办法。
就是用VFP命令打开EXCEL,
2、通过变量指定EXCEL中数据源所在的行和列,逐行逐列读取数据。
3、EXCEL中有些列被人为的设置成了数值型、时间日期型的数据, 要么DBF表中的数据类型与之相同,要么读取了列数据后进行判断并转换成与DBF表中字段类型一致的数据。
或者可以先判断EXCEL列的数据类型,再根据这个类型顺序建立DBF
7 楼
glaser [专家分:0] 发布于 2008-06-12 19:05:00
我用了高老师的代码进入我的程序,怎么老出错"不能识别的代码'VFP字段'"
8 楼
glaser [专家分:0] 发布于 2008-06-12 19:09:00
我用了高老师的代码进入我的程序,怎么老出错"不能识别的代码'VFP字段'",请高老师指正,其实我只要将固定格式XLS转加入我的DBF中就OK了(他们俩的字段和顺序完全一样)!!!
9 楼
jinlonggao [专家分:17130] 发布于 2008-06-14 14:32:00
glaser,你的另外一个贴子我已看过了,对于你的问题,最简单的方法是将你的EXCEL表另存为.DBF数据表,然后,.... 就不用说了.
10 楼
yzzd2167 [专家分:550] 发布于 2008-07-24 16:37:00
Import From Getfile('xls') Type XLS &&导入的DBF表的第一条记录为XLS的第一行。
Copy To test.Dbf For Recno()>1 &&复制除第一条记录的所有记录到test.dbf。
Go Top
lnFieldNum=Fcount() &&字段个数
lcString=''
For lnCount=1 To lnFieldNum
lcString=lcString+Field(lnCount)+' As '+Alltrim(Evaluate(Field(lnCount)))+','
Endfor
lcString='Select ' + lcString
lcString=Left(lcString,Len(lcString)-1)+' from test into dbf ttt2 '
&lcString &&执行select 查询
可以了,你循環加的時候應該加了好多"SELECT"在裡面除非你的EXCEL只有一列。
我来回复