1

マシンに 2003 と 2007 の両方の Excel バージョンがインストールされています。現在のソース コードでは、Office11 (2003) 相互運用アセンブリ Microsoft.Office.Interop.Excel.dll を使用して Excel テンプレートを作成しています。

テンプレートを作成して Excel 2007 で開くと、完全に開きます。2003 年に同じテンプレートを開くと、「ファイル形式が無効です」というメッセージが表示されます。

_excel = new Excel.Application();
_workbooks = _excel.Workbooks;
_excel.Visible = false;

_excel.DisplayAlerts = false;

// create and add a workbook with 1 worksheet named "Sheet1" 
_workbook = _workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);

_sheet = (Excel.Worksheet)_workbook.ActiveSheet;
4

1 に答える 1

1

両方のバージョンの相互運用機能アセンブリがインストールされている場合は、Office11 呼び出しを Office12 アセンブリにリダイレクトするバインディング リダイレクト アセンブリがある可能性があります。

ここから:

Office PIA をグローバル アセンブリ キャッシュにインストールして登録すると (Office を使用するか、PIA の再頒布可能パッケージをインストールして)、バインディング リダイレクト アセンブリもグローバル アセンブリ キャッシュにのみインストールされます。これらのアセンブリは、プライマリ相互運用機能アセンブリの正しいバージョンが実行時に読み込まれるようにするのに役立ちます。たとえば、2007 Microsoft Office プライマリ相互運用機能アセンブリを参照するソリューションが、同じプライマリ相互運用機能アセンブリの Microsoft Office 2010 バージョンを持つコンピューターで実行される場合、バインディング リダイレクト アセンブリは、.NET Framework ランタイムに Microsoft Office 2010 バージョンを読み込むように指示します。プライマリ相互運用アセンブリの。詳細については、「アセンブリ バインディングのリダイレクト」を参照してください。

これは、コードが Excel 2007 を呼び出しているため、Excel 2003 が (変換プラグインなしで) 読み取ることができない Excel 2007 形式のファイルを作成していることを意味します。

于 2010-04-13T19:26:52.337 に答える