急啊,VFP中导入数据的问题

deng_biao 2011-11-01 04:30:04
我现在要做的是将txt文件和Excel文件中的数据导入到临时表中,但是遇到了几个问题:
1、Excel文件的版本,有2.0、3.0、4.0、5.0等版本,我是想怎么将这个2.0版本的Excel文件另存为5.0版本的Excel文件,然后在调用Import From (m.cFile) Type xl5直接导入数据了。但是就是不知道怎么另存为文件。
2、请问将txt文件导入到临时表中是直接写这句代码 (Append From m.cFile Type SDF) 就可以了吗?
急用,求帮忙
...全文
439 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2011-11-08
  • 打赏
  • 举报
回复
Append From (m.cFile) DELIMITED With Char ','

那这句就不会再提示打开文件了
deng_biao 2011-11-08
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 apple_8180 的回复:]
引用 18 楼 deng_biao 的回复:
VB code

Local cType, cVersion, cAlias, cScurFile
m.cType = Lower(JustExt(m.cFile))
Select 0
If m.cType = 'txt' Then
Use card
Append From m.cFile DELIMITED With Char ','……
[/Quote]

我的m.cFile已经引用了GetFile()。
十豆三 2011-11-08
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 deng_biao 的回复:]
VB code

Local cType, cVersion, cAlias, cScurFile
m.cType = Lower(JustExt(m.cFile))
Select 0
If m.cType = 'txt' Then
Use card
Append From m.cFile DELIMITED With Char ','
m.cScurFile = D……
[/Quote]
要先
m.cFile=GetFile('txt;xls')
然后再
append from ....
十豆三 2011-11-08
  • 打赏
  • 举报
回复
你可以提示用户没有安装 Excel。这样用户就可以手动安装了。

oExcel=Createobject("Excel.application")
If Type("oExcel")#"O"
Messagebox( "访问Excel失败!请检查你的系统是否正确安装 Excel 软件!",48,"没有安装Excel")
Return
Endif
.....
十豆三 2011-11-08
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 deng_biao 的回复:]
引用 7 楼 apple_8180 的回复:
lcFileName='D:\TEST.XLS'
oExcel=Createobject('Excel.application')
oExcel.Workbooks.Open('&lcFileName') &&打开文件
*oExcel.ActiveSheet.Unprotect('保护密码') &……
[/Quote]

没有装 Excel 就不行了。
deng_biao 2011-11-08
  • 打赏
  • 举报
回复

Local cType, cVersion, cAlias, cScurFile
m.cType = Lower(JustExt(m.cFile))
Select 0
If m.cType = 'txt' Then
Use card
Append From m.cFile DELIMITED With Char ','
m.cScurFile = Dbf()
Else m.cType = 'xls'
Local oExcel
oExcel = CreateObject('Excel.application')
oExcel.Workbooks.Open(m.cFile)
oExcel.ActiveWorkBook.SaveAs('C:\Test.xls',39)
oExcel.ActiveWorkBook.Saved = .T.
oExcel.WorkBooks.Close
oExcel.Quit
Release oExcel
Import From('C:\Test.xls') Type xl5
m.cAlias = Alias()
m.cScurFile = Dbf()
Delete File('C:\Test.xls')
EndIf

请教一下怎么改!
deng_biao 2011-11-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 apple_8180 的回复:]
lcFileName='D:\TEST.XLS'
oExcel=Createobject('Excel.application')
oExcel.Workbooks.Open('&lcFileName') &&打开文件
*oExcel.ActiveSheet.Unprotect('保护密码') && 取消工作表保护
*oExcel.ActiveShe……
[/Quote]
要是有些电脑上没有装Excel怎么办呢?用后缀名为xls的文件导入,那么这个文件就不能打开啦。
deng_biao 2011-11-08
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 apple_8180 的回复:]
帖一下你的实际代码。
[/Quote]
Append From m.cFile DELIMITED With Char ','这句好像是一直都会显示‘打开’对话框,从中可以选择从哪个表中读入记录。可是我是要保存到临时表中,怎么办?m.cFile是全文件名。
deng_biao 2011-11-08
  • 打赏
  • 举报
回复
额,谢谢你了。太麻烦你了,我这就去看帮助文档,但有时候就是有点看不明白
十豆三 2011-11-08
  • 打赏
  • 举报
回复
上面每一步,不明白,都可以在 vfp 自带帮助文件中找到答案。
十豆三 2011-11-08
  • 打赏
  • 举报
回复
使用import命令,如:
Import From 表1.Xls Type Xl8
将表1.xls导入为表1.Dbf
---------------------------------------------------------------
用VFP导入
点击“文件”->导入->

类型选择:“Microsoft Excel 5.0 和 97 (XLS)”
来源于选择:你要导入的Excel文件
工作表:默认为Sheet1,如是你要把Excel文件中Sheet2中内容导过来,就选择“Sheet2”
->最后点击导入即可。

******************************************************************
*如果导入时出现提示:致命错误:异常代码=C0000005
*可以把Microsoft Excel 在保存时存为Microsoft Excel 5.0/95 格式或4.0格式。这样就能导入了。
******************************************************************

以上操作相当于如下命令操作:
Import From 你的表.Xls Type Xl8 Sheet "Sheet2"
有时需要把Excel表另存为“Microsoft Excel 5.0 和 97 (XLS)” 格式后,再用以上命令进行导入。


如果VFP表已存在,并且EXCEL表格式与VFP表格式一样,也可以用以下:
Use VFP表名
Append From Excel表.Xls Type Xl5

----------------------------建议---------------------------

导出
Copy To a.Xls Type Xl5


导入
Import From a.Xls Type Xl8

Import From a.Xls Type Xl5


如果VFP表已存在,并且EXCEL表格式与VFP表格式一样,也可以用以下:

Use 表.Dbf
Append From Getfile('XLS', '','', 0, '选择一个EXCEL文件') Type Xl5 &&或XL8



如果VFP表不存在,导入时直接创建(名字自定义),且导入后存放的位置不定:

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
十豆三 2011-11-08
  • 打赏
  • 举报
回复
你用临时表不也是个表吗?这个临时表要在 append from 前创建并为当前工作区表。
不然 append from 就不知道导给谁。

其实你的问题不建议用 append from ,直接 Import from ,这样就不用事先创建表了。

建议你多看看 vfp 自带的帮助文件中的 append from 命令 和 Import from 命令。

在这里问,还要等人回答,不如自已学习,找答案。
基本命令不吃着8、9分,即使这段得到答案了,再向后,你还不会的。
deng_biao 2011-11-08
  • 打赏
  • 举报
回复
我现在创建了一个表,然后用
Select card
Append From (m.cFile) DELIMITED With Char ','
将需要导入的数据都已经导进去了。
但是我可不可以不用创建表,用一个临时表就可以把保存这些数据呢?因为导入数据的字段不统一,所以创建的表的字段就不可控了。而我只是要把这些数据用Grid显示出来就OK了,没有必要放到表中。
可以加你QQ请教一下你吗?
十豆三 2011-11-08
  • 打赏
  • 举报
回复
你还是没有明白

Select 0 && 选择一个最小的未用的工作区,既然是未用的工作区,当然没有表打开
If m.cType = 'txt' Then
Append From m.cFile DELIMITED With Char ',' && 此句导给哪个表?当然不行,而且要这样(m.cFile)
deng_biao 2011-11-08
  • 打赏
  • 举报
回复
可是我是需要导入到临时表,难道要用 select m.cAlias?这样不行的啊?

十豆三 2011-11-08
  • 打赏
  • 举报
回复
Append From m.cFile DELIMITED With Char ','
改为
Append From (m.cFile) Delimited With Char ','

另外:
Select 0
改为
Select 你的要导入的表名

你 Select 0 就是选择一个最小的未用的工作区,既然是未用的工作区,当然没有表打开,所以提示你打开表了,不然导给谁,鬼才知道。
deng_biao 2011-11-08
  • 打赏
  • 举报
回复
可是他就是还要弹出打开对话框,我就无语了
deng_biao 2011-11-08
  • 打赏
  • 举报
回复
m.cFile 已经接收文件了
下面是将文件中的数据添加到临时表中,文件类型(txt\xls)

Local cType, cVersion, cAlias, cScurFile
m.cType = Lower(JustExt(m.cFile))
Select 0
If m.cType = 'txt' Then
Append From m.cFile DELIMITED With Char ','
m.cAlias = Alias()
m.cScurFile = Dbf()
Else m.cType = 'xls'
Local oExcel
oExcel = CreateObject('Excel.application')
If Type('oExcel') # 'O' Then
oConData.ShowText('访问Excel失败,请检查你系统是否安装Excel文件,或请用txt格式导入',ThisForm.info)
return
EndIf
oExcel.Workbooks.Open(m.cFile)
oExcel.ActiveWorkBook.SaveAs('C:\Test.xls',39)
oExcel.ActiveWorkBook.Saved = .T.
oExcel.WorkBooks.Close
oExcel.Quit
Release oExcel
Import From('C:\Test.xls') Type xl5
m.cAlias = Alias()
m.cScurFile = Dbf()
Delete File('C:\Test.xls')
EndIf
deng_biao 2011-11-08
  • 打赏
  • 举报
回复
可是他确实出现了‘OPEN’对话框啊
十豆三 2011-11-04
  • 打赏
  • 举报
回复
帖一下你的实际代码。
加载更多回复(14)

2,749

社区成员

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

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