在VFP中如何通过编程将已知Exce表转换成dbf表或将已知的dbf表转换成Exce表?
在VFP中如何通过编程将已知Exce表转换成dbf表或将已知的dbf表转换成Exce表?
[解决办法]
导出:Copy To Excel文件名.xls Type Xl5&& Xl5 也可以为 Xls
导入:Append From Excel文件名.xls Type Xl8 Sheet 'Sheet1'&& Xl8 也可以为 Xl5、Xls
导入:Import From Excel文件名.xls Type Xl8 Sheet 'Sheet1'&& Xl8 也可以为 Xl5、Xls
[解决办法]
1、把Microsoft Excel 在保存时存为Microsoft Excel 5.0/95 格式或4.0格式,再导入。
2、可以先建立好表结构再导入
[解决办法]
----------------------------建议---------------------------
导出
Copy To a.xls Type Xl5
导入
Import From a.xls Type Xl8 Sheet 'Sheet1'&& Xl8 也可以为 Xl5
或
如果VFP表已存在,并且EXCEL表格式与VFP表格式一样,也可以用以下:
Use 表.Dbf
Append From Getfile('xls', '','', 0, '选择一个EXCEL文件') Type Xl8 Sheet 'Sheet1'&& Xl8 也可以为 Xl5
如果VFP表不存在,导入时直接创建(名字自定义),且导入后存放的位置不定:
Close Databases All
lcExcelFileName=Getfile('xls', '','', 0, '选择一个Excel表,另存为Dbf表,Excel表的首行内容做为Dbf表的字段名')
If Empty(lcExcelFileName)
Return
Endif
Import From (lcExcelFileName) Type Xl8 Sheet 'Sheet1'&& Xl8 也可以为 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
--------------------
导入 Excel 数据我的步骤基本是这样的:
1、选择 xls 文件。
2、导到临时表中(用 Improt 或 Append),如果用 Append 需要按条件(或直接)删除第一行(字段名)。
然后显示到 Grid 中让操作人看一下数据是否正常。这步我一般叫 预览。此步可以修改、删除 Grid 表中的数据。
3、前面没有问题了,再直接导入正式表。
为什么这么麻烦呢,因为 Excel 太灵活,格式很有可能不符合导入标准(即使你把标准格式给用户了),因为有的用户改变了 Excel 格式都不知道,这样可能导入就会有问题,所以有必要给个预览步骤