| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1468 人关注过本帖
标题:ADO方式导入Excel数据获取表名
只看楼主 加入收藏
huxingyi
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2021-11-2
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
ADO方式导入Excel数据获取表名
使用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
搜索更多相关主题的帖子: Excel 获取 ADO 导入 表名 
2021-11-02 13:48
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:987
专家分:4946
注 册:2013-2-16
收藏
得分:5 
Ado连接成功后,利用 openschema(20) 获取表名称,没毛病.
2021-11-02 15:37
huxingyi
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2021-11-2
收藏
得分:0 
回复 2楼 厨师王德榜
因为在网上查询,发现是VB的例子,照着写时,调试了很久.
VB代码有用ADOX对象的,这个我不懂,
有用ors!TABLE_NAME,这个把我整蒙了,后面思考了一天,才想到不参考VB代码,直接写,一写之下还能运行.
2021-11-02 18:15
schtg
Rank: 12Rank: 12Rank: 12
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1542
专家分:3003
注 册:2012-2-29
收藏
得分:5 
学习啦,谢谢分享!
2021-11-03 07:18
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10537
专家分:42927
注 册:2014-5-20
收藏
得分:5 
只取表名简化一下
程序代码:
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

2021-11-03 09:40
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:987
专家分:4946
注 册:2013-2-16
收藏
得分:0 
回复 5楼 吹水佬
If  Right(tstr,1)="$"  
...
End if  
如果只想取Sheet名称,那么这个IF不能省略,否则会把Sheet 和 命名区域 都取下来,
2021-11-03 10:16
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10537
专家分:42927
注 册:2014-5-20
收藏
得分:0 
回复 6楼 厨师王德榜
确是,命名区域也叫TABLE_NAME
图片附件: 游客没有浏览图片的权限,请 登录注册
2021-11-03 11:09
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10537
专家分:42927
注 册:2014-5-20
收藏(1)
得分:0 
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
2021-11-03 15:15
sostemp
Rank: 4
等 级:贵宾
威 望:10
帖 子:202
专家分:284
注 册:2009-6-2
收藏
得分:5 
学习!
2021-11-03 16:55
schtg
Rank: 12Rank: 12Rank: 12
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1542
专家分:3003
注 册:2012-2-29
收藏
得分:0 
必须学习,谢谢!
2021-11-03 17:02
快速回复:ADO方式导入Excel数据获取表名
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016538 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved