注册 登录
编程论坛 VFP论坛

VFP9.0导入excel表现是字段名重复或无效,但是我的名字没问题啊

vfp90 发布于 2022-10-03 22:03, 1478 次点击
只有本站会员才能查看附件,请 登录
求大神教导
30 回复
#2
sdta2022-10-04 00:13
字段名过长后截取问题吧
#3
laowan0012022-10-04 08:52
数字开头的字段名无效
#4
vfp902022-10-04 12:31
回复 2楼 sdta
你好,我用的是名字是 bzd, 换其他也不行。
#5
vfp902022-10-04 12:31
回复 3楼 laowan001
不是数字开头就bzd三个英文。
#6
vfp902022-10-04 12:34
紧随其来的是出现这个  —— 找不到别名‘IMPORTWIZARD
#7
sdta2022-10-04 12:51
上传相关文件吧,光靠猜测是解决不了问题的。
#8
wxzd1232022-10-04 15:38
是不是列数太多呀
#9
laowan0012022-10-04 15:48
把程序和表贴上来吧
#10
gs25367856782022-10-04 18:28
你直接把EXCEL文件另存为DBF文件吧
我就是这么做的。
#11
vfp902022-10-04 20:18
回复 7楼 sdta
只有本站会员才能查看附件,请 登录

我没有通过输入程序操作,而是通过导入向导一步步进行,我截取了一张我的excel表。
#12
vfp902022-10-04 20:19
回复 8楼 wxzd123
你好,我这一共就七列而已
#13
vfp902022-10-04 20:21
回复 10楼 gs2536785678
我这excel另存为并没有dbf的选项,或者它有别名我不知道?
只有本站会员才能查看附件,请 登录
#14
csyx2022-10-05 05:39
尽整些没用的,先学会上传文件
#15
mywisdom882022-10-05 10:46
由于第2行,14行是字符
所以你这个表要用字符
最笨的方法,在VFP中,先用第1行为字段名称,建立一个,全部是字符的空表,然后导出到EXECL中,然后,在把你的数据,复制到刚才带出的表,然后在把刚才有数据的表,再倒进VFP中,估计,就不报错误了,其他的问题,你自己慢慢看,看是哪里有问题,自己发现问题,才能学的多
#16
sdta2022-10-05 14:18
也可能是EXCEL的版本问题,VFP9只支持低于EXCEL2003以下的版本,从EXCEL2007版本就不支持了(此处的支持指导入或导出)
#17
gs25367856782022-10-05 15:04
楼主你好,如果你是经常需要做从EXCEL到DBF的工作的
建议你安装一个免费的WPS吧
它可以把你的数据直接另存为DBF文件了

从你上传的数据表格中看到,第一列与第二列都是标题
请注意了,一个DBF数据只能有一个标题
请删除一个标题为好

在标题是只能是字母,汉字,或者是数字,下划线
但是不能出现括号?

[此贴子已经被作者于2022-10-5 15:08编辑过]

#18
sdta2022-10-05 18:22
全角括号可以做字段名
#19
sostemp2022-10-05 18:32
上传文件。
#20
vfp902022-10-05 18:54
回复 17楼 gs2536785678
好的,谢谢你!
#21
vfp902022-10-05 18:59
回复 16楼 sdta
嗯嗯,好的,我已经改到5.0版本都不行,我还试过改成csv,虽然可以导入,但是我当我设置字段名所在行时,就会显示错误#10在createtestcursor (O): 语法错误,然后是找不到别名。如果略过就可以。我再试试吧。
#22
vfp902022-10-05 19:35
回复 15楼 mywisdom88
你好,我试下了你的建议,还是一样的问题。我有个疑惑,为什么不用表单向导就可以呢,但是有的数据会出现很多位小数。其他的我再试试吧!
#23
aqyejun2022-10-08 16:54
vfp9.0导入支持Excel_2007,首先确保正确完整安装Excel,再次确认表中没有空行和空列。
#24
camsion2023-03-21 11:15
字段不要用中文,报错率大
#25
xuminxz2023-03-21 12:42
用com吧
#26
bilimyar2023-05-06 02:12
Excel 保存类型中没有找到 *dbf 文件类型,该怎么办?
#27
pvm20002023-05-06 10:48
以下是引用gs2536785678在2022-10-4 18:28:24的发言:

你直接把EXCEL文件另存为DBF文件吧
我就是这么做的。

可行方案
#28
dragonman192023-05-11 13:07
  以下代码我也是从本论坛得到,导入EXCEL文件用。office为2007版本
----------------------------------------------------
opendbf=getfile('xlsx')
IF EMPTY(opendbf)
else
lcFileName=opendbf
rq=ALLTRIM(LEFT(RIGHT(lcFileName,13),6))
oExcel=Createobject('Excel.application')
oExcel.Workbooks.Open('&lcFileName') &&打开文件
oExcel.ActiveSheet.UsedRange.Select &&选中已用区域的数据
oExcel.Selection.NumberFormatLocal = "@" &&把被选定的单元格设为文本格式
oExcel.Columns.AutoFit  &&让所有的列宽都自动调整
oExcel.DisplayAlerts=.F.
oExcel.ActiveWorkbook.SaveAs('C:\11.xls',39) && 43为97/2003 xlExcel9795(39为5.0/95 xlExcel5 & xlExcel7)
oExcel.Workbooks.Close &&关闭表
oExcel.Quit &&退出EXCEL
Release oExcel &&释放变量
*Messagebox('另存为5.0格式完成!',64,'信息提示')
IMPORT from c:\11  xl5
----------------------------------------------------
#29
ybq10142023-05-11 14:13
回复 楼主 vfp90
你把EXCEL工作簿中的工作表名字改一下就行,如果方便的话,将文件发上来。
#30
厨师王德榜2023-05-11 15:40
回复 28楼 dragonman19
你这样有点"绕远路" ,既然oExcel对象已经访问到了文件,为何还要另存为低版本,再用import呢 .
可以直接用数组把数据抓取出来的.
程序代码:
ff = "e:\CWBB\ttyian\ttyian.xlsx"  && 源文件,xls/xlsx均可
oExcel=Createobject('Excel.Application')
owb = oExcel.Workbooks.Open(ff)
osht = owb.Worksheets("Sheet1")  && 指定Sheet

r2 = osht.UsedRange.rows.count  && 最末行
c2 = osht.UsedRange.columns.count  && 最右列

arr11 = osht.range(osht.cells(2,1) ,osht.cells(r2,c2)).value  && 第一行是表头,故从第2行开始取

select importDBF
APPEND FROM ARRAY arr11
owb.Close()
oExcel.Quit()



[此贴子已经被作者于2023-5-11 15:42编辑过]

#31
dragonman192023-05-11 15:49
楼上是高手,我就直接把代码拿来用了,因为我这边用的数据量不是很大。
方便可以展开说说
1