2011-11-24 316 views
7

MS Visual Web Developer 2008 Express Edで開発中に問題が発生しました。 Windows7 64ビットOS上にASP.NET C#を開発する。 Microsoft.Office.Interop.Excelは64ビットで動作しません

私はExcelドキュメントを開くしようとしているが、それは私に与え Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))

私はすべてのプロセッサ(いずれもCPU、x64の、x86の)にビルドを構成しなかったが、それは動作しません。私はインターネット上でその答えを探したが、それをどう扱うかを見つけることはできなかった。

私はMicrosoft Visual C#2010 Expressで開発したとき、同じシステム上で動作する同じコードです。どうして?それは後ろに働く同じdllではない?

x64システムで動作するようにCOM DLLを変更する必要がありますか?

どうすればいいですか?

私のコードは次のとおりです。

using Excel = Microsoft.Office.Interop.Excel; 
xlApp = new Excel.Application(); 
__Log("Openning " + excelFileName); 
xlWorkBook = xlApp.Workbooks.Open(excelFileName, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(2); 
+0

私はこれがあなたの問題を解決willl完全にわからないんだけど、あなたは、32ビットのCOM DLLを持っている場合、あなたはおそらくのx86のビルドを使用する必要がありますあなたのプロジェクトは64ビットWindows上で実行していても可能です。 – Andrew

+0

あなたは正しいアイデアを持っていると思います。それが32ビットのExcelなら、64bit .netはそれを使って作業したくないでしょう。それをx86として構築するとうまくいくはずです。 –

+0

既に試してみましたが、同じことが起こりましたが、この問題がVisual C#で発生しない理由とウェブ開発者であることが分かりません – Bush

答えて

19

私は(MSエクセル2010で、少なくとも私の場合と)COMオブジェクトとの相互運用のMicrosoftのバグがあることが判明インターネットを掘った後。

.NETは、あなたのスレッド(C#またはVBコード)のローカリゼーションが以前にインストールしたMS Excelのローカリゼーションに適しているかどうかチェックし、そうでない場合はライブラリが古いか無効であることを伝えます。

あなたのスレッドのローカライズは、お使いのコンピュータの地域の設定から派生し(コントロールパネルから - >地域と言語の)

そして、この問題を解決するための2つのオプションがあります。

  1. あなたのスレッドを変更するにはあなたのオフィスのための言語パックをインストールし
  2. (コード別)局在化は

最初のソリューションは、このように書きます:

using System.Threading;  // For setting the Localization of the thread to fit 
using System.Globalization; // the of the MS Excel localization, because of the MS bug 

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 
excelFileName = System.IO.Path.Combine(excelPath, "Ziperty Buy Model for Web 11_11_2011.xlsm"); 

はそれが役に立てば幸い:) GR8日

+0

...詳細については、対応するKBエントリ:http://support.microsoft.com 320369 – Otiel

+1

@Otiel:KBは、VS 2005とExcel 2007(およびそれ以前のバージョン)にこのバグが当てはまると言います。説明は一致するように見えますが、関係のないバグかもしれません。 –

関連する問題