SQL查询EXCEL

我还一直以为这玩艺用不了的,今天听同事说可以,看了下发现了问题。

 

首先,这个服务器上必须的安装EXCEL。

第二,这个路径必须的是服务器上的路径,比方你直接查自己电脑上的就必须的用本机的SQL服务器。

我用的一句:select * From openrowset
('Microsoft.JET.OLEDB.4.0','Excel 8.0; DATABASE=D:\CrystalReportViewer1.xls','select * from [sheet1$A1:D100]')
还可以指定A1-D1 的前100行,当然第一列作了列名的话只有99了。




 

 

2007和2010版本:

 SELECT *
 FROM OpenDataSource( 'Microsoft.ACE.OLEDB.12.0',
 'Data Source="c:\book1.xlsx";User ID=Admin;Password=;Extended properties=Excel 12.0')...[Sheet1$]

 

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\book1.xlsx', 'SELECT * FROM [Sheet1$A1:D100]')

 

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\book1.xlsx', 'SELECT * FROM [Sheet1$]')

2003版本:

SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...[Sheet1$]

 

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\book1.xls', 'SELECT * FROM [Sheet1$]')

 

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\book1.xls', 'SELECT * FROM [Sheet1$A1:D100]')

 

而且,还需要用拥有服务器sysadmin角色权限的登录帐号,先执行下列语句打开SQL SERVER的'Ad Hoc Distributed Queries'开关。

exec sp_configure 'show advanced options',1;reconfigure;
exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure;

 

执行查询后,再用相反顺序的语句,关闭'Ad Hoc Distributed Queries'开关。

 

exec sp_configure 'Ad Hoc Distributed Queries',0;
reconfigure;exec sp_configure 'show advanced options',0;reconfigure;

原文出处:

 http://blog.sina.com.cn/s/blog_3e653ee60101a65c.html

 

 

posted @ 2013-04-26 20:59  金虹巴巴  阅读(206)  评论(0编辑  收藏  举报