注册 登录
编程论坛 VFP论坛

请教一个vfp导入Excel数据的问题!

lnzxd2006 发布于 2022-11-20 18:48, 829 次点击
在论坛中看到一段从Excel导入VFP数据的代码,示例Excel表有6列,我的表也有6列,但只需要前4列就行,把我原代码的Columns(7)中的7改为6,Resize(row1,6)中的6改为4,Cells(1,7)中的7改为6,Resize(row2,6)中的6改为4,运行提示错误,改回原来的值就可正常运行,哪位大侠能指导一下,什么问题?



CREATE TABLE  tmpzdwyj (驻地网名称 c(20),接入号码 c(20),号码地址 c(40),结算基数 n(10,2))
lcFileName=GETFILE('xlsx','选择XLSX文件','选择文件',0,'选择公客中心提供的驻地网佣金原始数据文件')


SET DEFAULT TO e:\zdwyj

oExcel = CREATEOBJECT('Excel.Application')
oExcel.DisplayAlerts = 0

    tmpExcel = oExcel.WorkBooks.Open(lcFileName).ActiveSheet
    &&tmpExcel.Rows("1:5").Delete
    row1 = oExcel.CountA(tmpExcel.Columns(1))
    row2 = oExcel.CountA(tmpExcel.Columns(7))
    arr1 = tmpExcel.Cells(1,1).Resize(row1,6).Value  
    arr2 = tmpExcel.Cells(1,7).Resize(row2,6).Value  
    INSERT INTO tmpzdwyj FROM ARRAY arr1
    INSERT INTO tmpzdwyj FROM ARRAY arr2
    oExcel.WorkBooks.Close

oExcel.Quit
SELECT * FROM tmpzdwyj
5 回复
#2
吹水佬2022-11-20 19:17
对EXCEL的文件有针对性,要看具体的表文件,没有通用的方法,别是用CountA()计算
#3
独木星空2022-11-20 20:01
回复 楼主 lnzxd2006
Excel表可塑性很强,你把需要导入的4列数据,移到或数值化复制到新表sheet1不就可以了。
简单的一个导入即可完成。
     如果,有其他方面的考虑另说。
#4
fyyylyl2022-11-21 09:35
你是不是把行、列整反了?
#5
gs25367856782022-11-21 14:49
EXCEL由于版本太多,如今与VFP早已没有联系了,朋友想把EXCEL的数据导入到DBF中
需要你首先把EXCEL数据另存为DBF文件,然后导入。
如果你用的是高版本的EXCEL,无法另存为DBF文件
你可以下载一个国产品的WPS,通过它,可以打开高版本的EXCEL,并且另存为DBF文件。
#6
lnzxd20062022-11-23 10:19
回复 2楼 吹水佬
谢谢回复,用其它方法解决了,也是在论坛里查找 的方法。
1