5

多くの理由で、ラップトップに MSExcel 2003 と MSExcel 2007 をインストールしました。各バージョン (ドキュメント レベル プロジェクトとアプリケーション レベル プロジェクト) の特定のプロジェクトを開発するには、両方のバージョンが必要です。ここで、Excel ファイルを開き、CustomXMLParts を読み取り、新しい Excel ファイルを書き込む WinForm プロジェクトを実行する必要があります。..\Visual Studio Tools for Office\PIA\ Office12 \Microsoft.Office.Interop.Excel.dll ライブラリ (Excel 2007 用)を使用する Microsoft.Office.Interop.Excel への参照を使用しています。そして、このコードの場合:

Microsoft.Office.Interop.Excel.Application excelApplication;    
excelApplication = new Microsoft.Office.Interop.Excel.ApplicationClass();
string version = excelApplication.Version;

この時点でバージョンは "11.0" ですが、Excel 2007 を開く必要があり、"12.0" である必要があり、プログラムが CustomXMLParts を取得しようとすると、2003 にはこのメソッドが存在しないため、例外がスローされます。

Excell 2003 をアンインストールすると正常に動作しますが、両方 (2003 と 2007) で作業する必要があります。Excel 2003 を再インストールすると、再び失敗します。Interop.Excel 参照のプロパティ「特定のバージョン」をチェックして、それが正しいことを確認し、app.config oldVersion="12.0.0.0" を変更して Excel 2003 と互換性を持たないようにしましたが、何も起こりません。 :

  <assemblyIdentity name="Microsoft.Office.Interop.Excel"  publicKeyToken="71E9BCE111E9429C" culture="neutral"/>
  <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="12.0.0.0"/>

何か案が?

Visual Studio 2008 と Visual Studio Tools for Office を使用しています。よろしくお願いします。

4

2 に答える 2

1

おそらくあなたが探している答えではありませんが、このSOの質問を見てください: Excel2007でOfficeAutomationを実行しようとしていますが、Excel2003を使い続けています

于 2010-11-04T18:30:45.597 に答える
1

xlsxドキュメントにはCodeplexでExcelPackageを使用できます。そうすれば、相互運用機能を使用する必要はありません。xlsxファイルを読み書きするためのサンプルコードがあります。

このようにして、干渉することなく2003年の相互運用機能を引き続き使用できます。

両方のバージョンで相互運用機能を使用する必要がある場合は、各バージョンを使用してアセンブリを別々のAppDomainにロードし、それらを分離する必要があります。

于 2010-11-04T18:36:42.993 に答える