SQL Server OPENROWSET 関数で Excel ファイル(.xls ファイル)を参照するには

SQL Server では、OPENROWSET 関数を利用すると、Excel 2003 のファイル(.xls ファイル)を参照することもできます。これは次のように利用します。

-- アドホック クエリの有効化
EXEC sp_configure 'show advanced options', 1
RECONFIGURE 
EXEC sp_configure 'Ad Hoc Distributed Queries', 1
RECONFIGURE

-- OPENROWSET 関数で、Shohin.xls ファイルの Sheet1 を参照
SELECT * FROM
 OPENROWSET('Microsoft.Jet.OLEDB.4.0'
     , 'Excel 8.0;Database=C:\Shohin.xls;'
     , 'SELECT * FROM [Sheet1$]')

-- アドホック クエリの無効化
EXEC sp_configure 'Ad Hoc Distributed Queries', 0
EXEC sp_configure 'show advanced options', 0
RECONFIGURE

Excel の場合も、Access のときと同じプロバイダ(Microsoft.Jet.OLEDB.4.0)を指定します。ファイルパスの部分は、「Excel 8.0;Database=xlsファイルへのパス」と記述します。OPENROWSET 関数は、Express Edition でも利用できます(Express Edition では Integration Services を利用できないので、この関数が役立ちます)。
OPENROWSET の詳細(ヘルプ)はこちらから
http://msdn.microsoft.com/ja-jp/library/ms190312.aspx


なお、何度も同じ .xls ファイルをクエリする場合には、リンク サーバーを作成しておくと便利です。