我有一個使用Excel interop從Excel文件讀取數據的C#WPF(.NET 4.0)應用程序。Excel interop在Office 2007計算機上運行,但在Office 2010計算機上運行失敗
當我在我的開發機器上運行這個應用程序,它有Excel 2007,它工作正常。當我有Excel 2010中安裝了另一臺機器上運行它,它失敗,出現以下錯誤信息:
System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (Exception from HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)).
試圖創建一個Microsoft.Office.Interop.Excel.Application
對象,如當發生該故障:
var app = new Application();
我的項目有Microsoft.Office.Interop.Excel.dll
參考(版本14.0.0.0,運行時版本V2.0.50727),它位於:
C:\Program Files\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14\Microsoft.Office.Interop.Excel.dll
我試圖運行與應用對所引用的DLL的默認設置:
- 複製本地=假
- 嵌入互操作類型=真
- 特定版本=真
我還試圖運行具有以下設置應用程序對引用的dll:
- 複製本地=真
- 嵌入互操作類型=假
- 特定版本=真
但與Office 2010的計算機上,無論這些嘗試的工作。
其他說明:Office 2010的機器是64位w/Windows 7.我的開發機器是帶有Windows XP的X86。
問題
是什麼原因造成了「類未註冊」的例外,如何解決?
編輯
針對Alex的答案,我試圖構建的應用程序作爲任何CPU,X86和X64,但它並沒有區別。我仍然得到相同的「班級未註冊」錯誤。
編輯2
剛試過的應用程序在32位計算機上與Office 2010沒有錯誤。因此,它可能是與特定的機器做錯了事,也可以是64位和Office 2010
編輯3
奧凱的組合,所以現在我已經測試了不同與Office 2010的64位機器。再次沒有錯誤。我認爲這意味着某臺機器出了問題,而這不是我的軟件故障。啊編程。