- 問題與現象
開發時調用Office組件,代碼編譯是通過的,但在運行時當ApplicationClass對象初始化后程序出現異常。
異常信息如下:
無法將類型為“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 對象強制轉換為接口類型“Microsoft.Office.Interop.Excel._Application”。此操作失敗的原因是對 IID 為“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 組件調用 QueryInterface 因以下錯誤而失敗: 找不到 。 (異常來自 HRESULT:0x80030002 (STG_E_FILENOTFOUND))。
- 原因分析
Office安裝了多個版本,並且最新版本卸載后仍殘留相關注冊表信息。
- 解決方案
嘗試卸載了所有版本Office軟件后重新安裝,但問題仍然無法解決。
解決此問題仍要從注冊表入手。
- 打開regedit.exe。
- 找到{000208D5-0000-0000-C000-000000000046}。
- 在里面可以看到引用了{00020813-0000-0000-C000-000000000046} ,如果更改為不存在的IID程序會提示未注冊。
- 在HKEY_CLASSES_ROOT中找到TypeLib
- 在TypeLib中找到{00020813-0000-0000-C000-000000000046}
- 刪除不存在的Office版本
注:版本1.8對應的是Office2013,版本1.7對應的是Office2010,版本1.6對應的是Office2007,版本1.5對應的是Office2003,版本1.0對應的是Microsoft Excel 5.0 對象程序庫。
