Excel 接続マネージャー

適用対象: SQL Server Azure Data Factory の SSIS Integration Runtime

Excel 接続マネージャーを使用すると、パッケージは Microsoft Excel ブック ファイルに接続できます。 Microsoft SQL Server Integration Services に含まれる Excel ソースと Excel 変換先は、Excel 接続マネージャーを使用します。

重要

Excel ファイルへの接続、および Excel から、または Excel へのデータの読み込みに関する制限事項と既知の問題については、「Load data from or to Excel with SQL Server Integration Services (SSIS)」 (SQL Server Integration Services (SSIS) を使用して Excel から、または Excel にデータを読み込む) を参照してください。

Excel 接続マネージャーをパッケージに追加するときに、 Integration Services により、実行時に Excel 接続として解決される接続マネージャーを作成し、接続マネージャーのプロパティを設定して、接続マネージャーをパッケージの Connections コレクションに追加します。

接続マネージャーの ConnectionManagerType プロパティは、 EXCELに設定されます。

Excel 接続マネージャーの構成

Excel 接続マネージャーは、次の方法で構成できます。

  • Excel ブック ファイルのパスを指定します。

  • ファイルの作成に使用した Excel のバージョンを指定します。

  • 選択したワークシート内または範囲内の最初の行に、列名が格納されているかどうかを示します。

プロパティを設定するには SSIS デザイナーから行うか、またはプログラムによって設定します。

SSIS デザイナーで設定できるプロパティの詳細については、「 Excel 接続マネージャー」を参照してください。

プログラムによる接続マネージャーの構成については、「 ConnectionManager 」と「 プログラムによる接続の追加に設定されます。

Excel 接続マネージャー

[Excel 接続マネージャー] ダイアログ ボックスを使用すると、既存または新規の Microsoft Excel ブック ファイルへの接続を追加できます。

オプション

[Excel ファイル パス]
既存または新規の Excel ブック ファイルのパスおよびファイル名を入力します。

[参照]
[開く] ダイアログ ボックスを使用して、Excel ファイルが存在するフォルダー、または新しいファイルを作成するフォルダーを指定します。

[Excel バージョン]
ファイルを作成するために使用した Microsoft Excel のバージョンを指定します。

[先頭行に列名を含める]
選択されているワークシートのデータの 1 行目に列名が含まれているかどうかを指定します。 このオプションの既定値は [true]です。

データ型が混在しているデータを Excel からインポートするためのソリューション

既定でデータ型が混在するデータを使用する場合、Excel ドライバーでは最初の 8 行が読み取られます (TypeGuessRows レジスタ キーで設定される)。 Excel ドライバーでは、データの最初の 8 行に基づき、各列のデータ型が推測されます。 たとえば、Excel のデータ ソースで 1 列に数字とテキストが入っているとき、最初の 8 行が数字であれば、その最初の 8 行に基づき、その列のデータが整数型であるとドライバーでは判断される可能性があります。 その場合、SSIS では、テキスト値がスキップされ、NULL としてインポート先にインポートされます。

この問題を解決するには、次の解決策のいずれかをお試しいただけます。

  • Excel ファイルで Excel 列の種類を [テキスト] に変更します。

  • IMEX 拡張プロパティを接続文字列に追加し、ドライバーの既定動作をオーバーライドします。 ";IMEX=1" という拡張プロパティを接続文字列の終わりに追加すると、Excel ではデータがすべてテキストとして扱われます。 次の例を参照してください。

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\ExcelFileName.xlsx;Extended Properties="EXCEL 12.0 XML;HDR=YES;IMEX=1";
    

    この解決策で解決するには、場合によってはレジストリ設定も変更する必要があります。 main.cmd ファイルは次のようになります。

    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel" /t REG_DWORD /v TypeGuessRows /d 0 /f
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel" /t REG_DWORD /v TypeGuessRows /d 0 /f
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel" /t REG_DWORD /v TypeGuessRows /d 0 /f
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel" /t REG_DWORD /v TypeGuessRows /d 0 /f
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\15.0\Access Connectivity Engine\Engines\Excel" /t REG_DWORD /v TypeGuessRows /d 0 /f
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Access Connectivity Engine\Engines\Excel" /t REG_DWORD /v TypeGuessRows /d 0 /f
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\16.0\Access Connectivity Engine\Engines\Excel" /t REG_DWORD /v TypeGuessRows /d 0 /f
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Access Connectivity Engine\Engines\Excel" /t REG_DWORD /v TypeGuessRows /d 0 /f
    
  • ファイルを CSV 形式で保存し、CSV インポートをサポートするように SSIS パッケージを変更します。

SQL Server Integration Services (SSIS) を使用して Excel から、または Excel にデータを読み込む
Excel ソース
Excel 変換先