分享

使用sql语句向Excel查询和更新

 jbgy 2013-01-10

使用sql语句向Excel查询和更新

 

首先可以使用如下sql语句直接实现。
 1、查询Excel
select * from OpenRowSet(''microsoft.jet.oledb.4.0'',''Excel 8.0;HDR=yes;database=c:\book1.xls;'',''select * from [Sheet1$]'') where c like ''%f%''

select * from
OPENROWSET(''MICROSOFT.JET.OLEDB.4.0''
,''Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\book1.xls'',[sheet1$])

1)hdr=yes时可以把xls的第1行作为字段看待,如第1个中hdr=no的话,where时就会报错
2)[]和美圆$必须要,否则M$可不认这个账

2、修改Execl
update OpenRowSet(''microsoft.jet.oledb.4.0'',''Excel 8.0;hdr=yes;database=c:\book1.xls;'',''select * from [Sheet1$]'')
set a=''erquan'' where c like ''%f%''

3、导入导出
insert into OpenRowSet(''microsoft.jet.oledb.4.0'',''Excel 8.0;hdr=yes;database=c:\book1.xls;'',''select * from [Sheet2$]'')(id,name)
select id,name from serv_user

或BCP实现,BCP是 sql自带的一个数据转移工具,可以直接在命令行下运行

master..xp_cmdshell''bcp "serv-htjs.dbo.serv_user" out "c:\book2.xls" -c -q -S"." -U"sa" -P"sa"''

从Excel向SQLServer导入:

select * into serv_user_bak
from OpenRowSet(''microsoft.jet.oledb.4.0'',''Excel 8.0;HDR=yes;database=c:\book1.xls;'',''select * from [Sheet1$]'')

如果表serv_user_bak不存在,则创建 最后也可以通过数据库联接字符串直接连接"provider = microsoft.jet.oledb.4.0;data source=c:\\excel.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";在程序中,将上述连接字符串用于创建一个新的数据库连接,然后就可以正常使用sql语句进行Excel查询了

如果上述连接池会出错,请去掉hdr=yes

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多