我还一直以为这玩艺用不了的,今天听同事说可以,看了下发现了问题。
首先,这个服务器上必须的安装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