SSISとエクセルの連携

Pocket

クライアントにデータを渡す時に、エクセル限定の場合ってありますよね

でも、サーバーにはOfficeはインストールされてないのでどうしようって時の備忘録
SQL Server2005のSSISではエクセルとの連携はできます

Excel2003以前の.xlsファイルを使った連携は
Microsoft OLE DB Provider for Jet 4.0を使って出力します

.xlsx の2007ファイルの場合はSSISだけでは連携できません。
別途、Microsoft Office 12.0 Access Database Engine OLE DB Providerを
インストールする必要があります。
このOLEドライバーはMS Office2007をインストールすれば使えるようになります。
しかし、インストールしなくてもMicrosoftのダウンロードセンターから
AccessDatabaseEngine.exeをダウンロードすればOLEドライバーが使えます。

ちなみにAccessとSSISの連携ではMicrosoft Office 12.0 Access Database Engine OLE DB Providerを
そのまま使えます。
しかし、Excelの場合はそのまま使えません・・・。悩みました。
Extended PropertiesにExcel 12.0を設定する必要があります。
HDR=YES;IMEX=0 など他にExtended Propertiesに設定できるオプションもあります。
それぞれ先頭行をヘッダーとして認識するか、すべてテキストとして扱うかです。
エクセルからデータ取得する場合に使うのでしょうね。
Extended Propertiesに複数のオプションを設定できるので、下のようにダブルクォートで囲む必要があります。

Extended Properties="Excel 12.0;HDR=YES;IMEX=0"

エクセルにデータを書き込む場合、思わぬ行から書き込まれる時があります。
その場合はエクセルの行を削除すると上手くいく場合がありますよ。
自分でエクセルに書き込む場合にやるパターンを書いておきます。
まず、エクセルのテンプレートファイルを作ります。
これはSSISではなく、普通にOfficeソフトを使って事前につくっておきます。

それをSSISのファイルシステムタスクでコピーして使うようにします。
そうすれば、上手くいかなかったときなどテンプレートファイルを直せばいいんですよね。

コメントを残す