excel导入到vfp中有关列标题

eipt 2009-05-27 01:42:53
excel导入到vfp中,使用import,如何把excel第一行设置为列标题呢?
...全文
295 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2009-06-03
  • 打赏
  • 举报
回复
再优化一下,并且字段数支持大于上面的26个:

Close Databases All
lcExcelFileName=Getfile('Xls', '','', 0, '选择一个Excel表,另存为Dbf表,Excel表的首行内容做为Dbf表的字段名')
If Empty(lcExcelFileName)
Return
Endif
Import From (lcExcelFileName) Type Xl5
lcTmpDbfName=Juststem(Dbf())
For m.lnI=1 To Fcount("&lcTmpDbfName")
lcStr="Alter Table "+ "&lcTmpDbfName Rename Column "+Field(m.lnI)+" To "+Evaluate(Field(m.lnI))
&lcStr.
Endfor
lcPutDbfName=Putfile('',lcTmpDbfName,'Dbf')
If Empty(lcPutDbfName)
Return
Endif
Copy To (lcPutDbfName) For Recno()#1
Close Databases All
十豆三 2009-06-03
  • 打赏
  • 举报
回复
my_file=Getfile("xls")
Import From "&my_file" Type Xl5
my_dbf=Strtran("&my_file",".XLS","")
my_dbf=Justfname("&my_dbf")
Select ("&my_dbf")
For m.lnI=1 To Fcount("&my_dbf")
mzd=Substr("ABCDEFGHIJKLMNOPQRSTUVWSYZ",m.lnI,1)
mfilename=Field(mzd)
m_ren="Alter Table "+ "&my_dbf Rename Column "+ mzd+" to "+ Chrtran(&mfilename,Space(1),"")
&m_ren.
Endfor
Go 1
Delete
Pack
Browse
eipt 2009-06-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 apple_8180 的回复:]
再优化一下,并且字段数支持大于上面的26个:


VBScript codeClose Databases All
lcExcelFileName=Getfile('Xls', '','', 0, '选择一个Excel表,另存为Dbf表,Excel表的首行内容做为Dbf表的字段名')
If Empty(lcExcelFileName)
Return
Endif
Import From (lcExcelFileName) Type Xl5
lcTmpDbfName=Juststem(Dbf())
For m.lnI=1 To Fcount("&lcTmpDbfName")
lcStr="Alter Table "+ "&lcTmpDbfName Rename Col…
[/Quote]


这个有效,非常感谢!也谢谢ZJPQJB
maowx 2009-06-02
  • 打赏
  • 举报
回复
你用导入向导呀,选好被导入的文件,设好存放的位置和文件名,再使用第二行作为列标题就行了,很方便,是vfp自己带的导入向导,我一直这样用。
ZJPQJB 2009-06-02
  • 打赏
  • 举报
回复
把Excel文件放到同一目录中再试试。增加了防止列标题中的空格干扰问题。
my_file=GETFILE("xls")
IMPORT FROM "&my_file" type XL5
my_dbf=STRTRAN("&my_file",".XLS","")
my_dbf=STRTRAN("&my_dbf",SYS(5)+SYS(2003)+"\","")
SELECT ("&my_dbf")
FOR iii=1 to FCOUNT("&my_dbf")
mzd=SUBSTR("ABCDEFGHIJKLMNOPQRSTUVWSYZ",iii,1)
mfilename=FIELD(mzd)
m_ren="ALTER TABLE "+ "&my_dbf rename column "+ mzd+" to "+ CHRTRAN(&mfilename," ","")
&m_ren
NEXT
GO 1
DELETE
PACK
BROWSE
xlj2000 2009-06-02
  • 打赏
  • 举报
回复
楼主想用程序完成不想用手工导。
eipt 2009-06-01
  • 打赏
  • 举报
回复
如果你的VFP表已经存在,则可以直接用

use VFP表名
APPEND FROM Excel表.xls TYPE xl5


请教:如果vfp表不存在,应该如何操作?


my_file=GETFILE("xls")
IMPORT FROM "&my_file" type XL5
my_dbf=STRTRAN("&my_file",".XLS","")
my_dbf=STRTRAN("&my_dbf",SYS(5)+SYS(2003)+"\","")
SELECT ("&my_dbf")
FOR iii=1 to FCOUNT("&my_dbf")
mzd=SUBSTR("ABCDEFGHIJKLMNOPQRSTUVWSYZ",iii,1)
mfilename=FIELD(mzd)
m_ren="ALTER TABLE "+ "&my_dbf rename column "+ mzd+" to "+ &mfilename
&m_ren
NEXT
GO 1
DELETE
PACK
BROWSE

试了一下,第一行没有变成标题
ZJPQJB 2009-05-29
  • 打赏
  • 举报
回复
my_file=GETFILE("xls")
IMPORT FROM "&my_file" type XL5
my_dbf=STRTRAN("&my_file",".XLS","")
my_dbf=STRTRAN("&my_dbf",SYS(5)+SYS(2003)+"\","")
SELECT ("&my_dbf")
FOR iii=1 to FCOUNT("&my_dbf")
mzd=SUBSTR("ABCDEFGHIJKLMNOPQRSTUVWSYZ",iii,1)
mfilename=FIELD(mzd)
m_ren="ALTER TABLE "+ "&my_dbf rename column "+ mzd+" to "+ &mfilename
&m_ren
NEXT
GO 1
DELETE
PACK
BROWSE
ACMAIN_CHM 2009-05-29
  • 打赏
  • 举报
回复

如果你的VFP表已经存在,则可以直接用

use VFP表名
APPEND FROM Excel表.xls TYPE xl5
eipt 2009-05-29
  • 打赏
  • 举报
回复
对的
wwwwb 2009-05-27
  • 打赏
  • 举报
回复
VFP版本?
使用VFP读取EXCEL的数据示例 *!* *****数据导入程序,由“学生基本基本情况表模板.xls”导入数据 *!* ***使用VFP控制EXCEL表,计取指定的内容*********** *!* "学生基本基本情况表模板.xls"的数据布局 *!* cells(1,1):“标题” *!* cells(2,1):校区 *!* cells(2,3):学历 *!* cells(2,5):专业 *!* cells(2,6):班级 *!* *!* set safe off set talk on LOCAL inf(4) as String *dele file C:\MyDocu~1\Resume.xlw objExcel = CreateObject("Excel.Application") &&创建一个EXCEL应用程序实例 wjm=getfile("xls") objExcel.Workbooks.Open(wjm) &&调用workbooks(Microsoft Excel 应用程序; 当前打开的所有 Workbook 对象的集合。); 对象的open方法程序来打开指定的文件,并为; 打开的文件创建一个新的工作簿 *objexcel.visible=.f. ***下面的代码判断出生日期字段的格式是否满足要求*** *IF !varTYPE(objexcel.cells(10,6))="d" * MESSAGEBOX("出生日期字段不满足格式要求,不能导入,请将出生日期字段修改为:"+CHR(13); +"mm.dd.yy的格式,如:05.19.83 表示1983年5月19 然后再运行此导入程序") * RETURN *ENDIF inf(1)=substr(objexcel.cells(2,1).value,7)&&校区 Inf(2)=objexcel.cells(2,4).value&&学历 inf(3)=objexcel.cells(2,6).value&&专业 inf(4)=objexcel.cells(2,7).value&&班 LOCAL nrow as Number ,i as Number i=0 *MESSAGEBOX("计算行数") *MESSAGEBOX(objexcel.cells(5,1).value) *MESSAGEBOX(VARTYPE(objexcel.cells(22,1).value)) DO WHILE .t. i=i+1 ?objexcel.cells(i,1).value IF !VARTYPE(objexcel.cells(i,1).value)="C" nrow=i-1 EXIT ENDIF ENDDO *nrow=20 LOCAL arecord(16) *MESSAGEBOX("循环添加记录") USE zlb disinf("zlb.dbf现有记录"+ALLTRIM(STR(RECCOUNT()))+"条") disinf("正在添加记录") FOR i=4 TO nrow arecord(1)=objexcel.cells(i,1).value&&学号  arecord(2)=objexcel.cells(i,2).value&&姓名 arecord(3)=objexcel.cells(i,3).value&&性别 arecord(4)=objexcel.cells(i,4).value&&籍贯 arecord(5)=objexcel.cells(i,5).value&&民族 *MESSAGEBOX(VARTYPE(objexcel.cells(i,6).value)) IF VARTYPE(objexcel.cells(i,6).value)="C" arecord(6)=RIGHT(objexcel.cells(i,6).value,2)+"/"+"01"+'/'; +LEFT(objexcel.cells(i,6).value,2) ELSE arecord(6)= RIGHT(STR(objexcel.cells(i,6).value,5,2),2); +"/"+"01"+"/"; +LEFT(STR(objexcel.cells(i,6).value,5,2),2) ENDIF &&arecord(6)=IIF(VARTYPE(objexcel.cells(i,6).value)="c",RIGHT(objexcel.cells(i,6).value,2)+"/"+"01"+'/'+LEFT(objexcel.cells(i,6).value,2),; RIGHT(STR(objexcel.cells(i,6).value,5,2),2)+"/"+"01"+'/'+LEFT(STR(objexcel.cells(i,6).value,5,2),2))&&出生年月 arecord(7)=LEFT(ALLTRIM(STR(objexcel.cells(i,8).value,6,0)),6)&&邮政编码 arecord(8)=objexcel.cells(i,7).value&&通讯地址 arecord(9)=objexcel.cells(i,9).value &&收信人 arecord(10)=iif(!ALLTRIM(objexcel.cells(i,10).value)=="",objexcel.cells(i,10).value; ,"无")&&家庭电话 arecord(11)=inf(3)&&专业 arecord(12)=inf(4)&&班级 arecord(13)=objexcel.cells(i,11).value&&寝室号码 arecord(14)=STR(objexcel.cells(i,12).value,7,0)&&寝室电话 arecord(15)=inf(1)&&校区 arecord(16)=inf(2)&&学历 SELECT zlb APPEND FROM ARRAY arecord ENDFOR disinf("zlb.dbf现有记录"+ALLTRIM(STR(RECCOUNT()))+"条") disinf("记录添加完毕,共添加了"+ALLTRIM(STR(nrow-3))+"条记录,请查检") INKEY(3) WAIT CLEAR ****定义日期转换函数,此函数能将各种格式的日期转换成mm/dd/yy的格式**** ****如果要转换的日期只有年和月,则自动添加日为'01'*** *!* FUNCTION datetran *!* PARAMETERS soudate *!* IF VARTYPE(soudate)="N" *!* DO case *!* CASE LEN(souDATE) ***关闭工作簿,退出EXCEL objexcel.quit RELEASE objexcel *!* objexcel.save *!* *objExcel.ActiveWorkbook.saved=.f. *!* objexcel.Quit &&退出 *!* RELEASE objexcel *!* retu

2,723

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧