OLEDB を使用して Excel ファイル(2007形式)のデータを読み込むための前準備

メモ書きです。プログラム側については探すといくつか出てくるので、ここではその前準備について書いています。(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 モードで動作します。

]]>

Office は 32bit 版と 64bit 版を混在してインストールすることができない

今テスト環境を構築するために Windows Server 2008 R2 に Office をありったけ入れていたのですが、Office 2010 の 64bit 版をインストールしようとしたら下のようなエラーが出てしまいました。

image

旧バージョンが 32bit 版しかないので途中から 64bit 版入れることができないんですね。

]]>