メモ書きです。プログラム側については探すといくつか出てくるので、ここではその前準備について書いています。(2011/10時点)
OLEDB を使用して 2007 形式の Excel ファイルを読み込むにはコンポーネントをインストールする必要があります。Office や Visual Studio をインストールしてもコンポーネントはインストールされないので個別にインストールする必要があります。
コンポーネントは下記のいずれかをインストールします。
2007 バージョンと 2010 バージョンはどちらをインストールしても大丈夫です。バージョンの違いによってプログラムが変わることはありません。
ただし、32bit と 64bit では以下のような違いがあります。
OS が 32bit 版の場合
2007 (32bit)、2010 (32bit) のいずれかのみインストールできます。
OS が 64bit 版の場合
どのコンポーネントもインストール可能です。ただし、プログラムで使用する際は注意する事項があります。(後程記載)
2007 Office がインストールされている場合
すべてインストールできます。
Office 2010 32bit がインストールされている場合
2010 の 64bit 版のコンポーネントはインストールできません。
Office 2010 64bit がインストールされている場合
2010 の 32bit 版のコンポーネントはインストールできません。ただし、2007 32bit 版のコンポーネントはインストールできます。
データ接続コンポーネント 32bit 版がインストールされている場合
64bit 版のコンポーネントはインストールできません。
データ接続コンポーネント 64bit 版がインストールされている場合
32bit 版のコンポーネントはインストールできません。(実は 2007 のコンポーネントをインストールする際、2010 の存在チェックを行っていないため、2010 64bit ⇒ 2007 32bit の順番でインストールすることは可能です。ただし、正常な動作をしてくれる保証はありません。)
64bit OS 環境で OLEDB を使用する際の注意点
上記の理由により 32bit 版と 64bit 版のデータ接続コンポーネントを同時にインストールすることはできません。作成したアプリケーションを起動した際、そのアプリケーションが 32bit なのか 64bit なのかで使用されるデータ接続コンポーネントの bit(32 or 64) が決定されるので注意が必要です。
例えば Office 2010 64bit をインストール済みの場合、データ接続コンポーネントのバージョンは必然的に 2010 64bit 版になります(2007 は除く)。Visual Studio 2010 SP1 で作成するアプリケーションはデフォルトで x86 になっているので、そのまま OLEDB を使用するアプリケーションを作成しても実行時にコンポーネントが存在しないというエラーが発生します。
また、他のアプリケーションの拡張コンポーネントとしてプログラムを作成する際、その対象アプリケーションの bit に依存する点も注意する必要があります。例えば Visual Studio 2010 の拡張プログラムを作成する際、Visual Studio 2010 は 32bit 版しか提供されていないので、作成した拡張コンポーネントは必然的に 32bit モードで動作します。
]]>