Microsoft.Office.Interop.Excelは64ビットで動作しません

私はMS Visual Web Developer 2008 Express Edで開発するときに問題が発生しました。 Windows7 64ビットOS上にASP.NET C#を開発する。

I'm trying to open an Excel document, but it gives me 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);
7
既に試してみましたが、同じことが起こった、私はこの問題がVisual C#で発生しない理由とWeb開発者
追加された 著者 Bush,
私はあなたが正しいアイデアを持っていると思う@Andrew。それが32ビットのExcelなら、64bit .netはそれを使って作業したくないでしょう。それをx86として構築すればうまくいくはずです。
追加された 著者 Simon Halsey,
私は完全にあなたの問題を解決するかどうかはわかりませんが、32ビットCOM DLLをお持ちの場合は、おそらく64ビットWindows上で実行している場合でも、あなたのプロジェクトのx86ビルドを使用する必要があります。
追加された 著者 Andrew,

1 答え

インターネットを掘り下げた後、COMオブジェクトを持つMicrosoft Interopにバグがあることがわかりました(少なくとも私の場合はMS Excel 2010です)。

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

Your thread localization is derived from your computer regional settings (from the control panel --> regional and language)

次に、この問題を解決するための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日

19
追加された
...詳細については、対応するKBエントリ:サポート.microsoft.com/default.aspx?scid = kb; en-us; 320369
追加された 著者 Otiel,
@Otiel:KBは、このバグがVS 2005とExcel 2007(およびそれ以前のバージョン)に当てはまると言います。説明は一致するように見えますが、関係のないバグかもしれません。
追加された 著者 Kevin Coulombe,