注册 登录
编程论坛 VFP论坛

ADO方式导入Excel数据获取表名

huxingyi 发布于 2021-11-02 13:48, 1757 次点击
使用ADO方式导入excel数据时,获取excel工作表的名称,直接上示例代码(导入文件为XSL格式)

#Define  adschematables  20
#Define aduseclient 3

Local cxls,oconn,ors,tbnamestr
tbnamestr=""
m.cxls="c:\1.xls"
oconn = Createobject("adodb.connection")  &&建立连接对象
With oconn
*连接字符串
    .connectionstring = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' ;
        + m.cxls + ';Extended Properties="excel 8.0;HDR=YES;IMEX=1;";Persist Security Info=False'
    .Open
Endwith
oconn.cursorlocation=aduseclient  &&常数 3

ors=Createobject("adodb.recordset")
ors.cursorlocation= aduseclient
ors=oconn.openschema(adschematables) &&常烽 20
rsrow=ors.recordcount  &&记录集的行
rscol=ors.Fields.Count &&记录集的列

Do While  Not ors.Eof
    For i=0 To rscol-1
        If i=2
            tstr=ors.Fields(i).Value
            If  Right(tstr,1)="$"  
                    IF EMPTY(tbnamestr)
                    tbnamestr=tstr
                    ELSE
                    tbnamestr=tbnamestr+Chr(44)+tstr  &&chr(44),逗号
                ENDIF
            Endif
        Endif
    Endfor
    ors.movenext
ENDDO
?tbnamestr  &&字符串内储存表名,以逗号分隔
ors.Close
oconn.Close
9 回复
#2
厨师王德榜2021-11-02 15:37
Ado连接成功后,利用 openschema(20) 获取表名称,没毛病.
#3
huxingyi2021-11-02 18:15
回复 2楼 厨师王德榜
因为在网上查询,发现是VB的例子,照着写时,调试了很久.
VB代码有用ADOX对象的,这个我不懂,
有用ors!TABLE_NAME,这个把我整蒙了,后面思考了一天,才想到不参考VB代码,直接写,一写之下还能运行.
#4
schtg2021-11-03 07:18
学习啦,谢谢分享!
#5
吹水佬2021-11-03 09:40
只取表名简化一下
程序代码:
cDefPath = ADDBS(JUSTPATH(SYS(16)))
#define adSchemaTables  20
xlsFile = cDefPath + "Book1.xls"
conn = CREATEOBJECT("ADODB.Connection")
conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0';Data Source="+xlsFile)
rs = conn.OpenSchema(adSchemaTables)
DO WHILE !rs.EOF
    ? RTRIM(rs.Fields(2).Value,"$")
    rs.MoveNext
ENDDO
conn.Close

#6
厨师王德榜2021-11-03 10:16
回复 5楼 吹水佬
If  Right(tstr,1)="$"  
...
End if  
如果只想取Sheet名称,那么这个IF不能省略,否则会把Sheet 和 命名区域 都取下来,
#7
吹水佬2021-11-03 11:09
回复 6楼 厨师王德榜
确是,命名区域也叫TABLE_NAME
只有本站会员才能查看附件,请 登录
#8
吹水佬2021-11-03 15:15
ADOX方式
程序代码:
cDefPath = ADDBS(JUSTPATH(SYS(16)))
SET DEFAULT TO (cDefPath)
xlsFile = cDefPath + "Book1.xls"
cat = CREATEOBJECT("ADOX.Catalog")
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0';Data Source="+xlsFile
FOR EACH table IN cat.Tables
    IF RIGHT(table.name,1)=="$"
        ? table.name
    ENDIF
ENDFOR
#9
sostemp2021-11-03 16:55
学习!
#10
schtg2021-11-03 17:02
必须学习,谢谢!
1