首先,這裡提供的解決辦法僅適用於出現如下異常的情況:
無法將類型為“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 物件強制轉換為介面類型“Microsoft.Office.Interop.Excel._Application”。此操作失敗的原因是對 IID 為“{000208D5-0000-0000-C000-000000000046}”的介面的 COM 組件調用 QueryInterface 因以下錯誤而失敗: 庫沒有註冊。 (異常來自 HRESULT:0x8002801D (TYPE_E_LIBNOTREGISTERED))。
英文版的異常訊息如下:
Unable to cast COM object of type 'Microsoft.Office.Interop.Excel.ApplicationClass' to interface type 'Microsoft.Office.Interop.Excel._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{000208D5-0000-0000-C000-000000000046}' failed due to the following error: could not be found. (Exception from HRESULT: 0x80030002 (STG_E_FILENOTFOUND)).
本人出現如上異常的系統內容如下:
1. 作業系統為Windows Server 2008 R2 x64;
2. 安裝了SharePoint 2010 Beta,從而如下檔案夾及相應檔案被建立:
C:\Program Files\Microsoft Office\Office14\...
C:\Program Files (x86)\Microsoft Office\Office14\...
3. 安裝了Visual Studio 2010 RC,從而如下檔案夾及相應檔案被建立:
C:\Program Files\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office12\Microsoft.Office.Interop.Excel.dll
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office12\Microsoft.Office.Interop.Excel.dll
4. 安裝了MS Office 2007。(註:MS Office的版本和SharePoint的版本不一致。這一點可能是出現異常的根本原因!)
對異常異常的解決辦法為,刪除如下兩類的註冊表鍵:
第一類:HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7
第二類:HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{00020812-0000-0000-C000-000000000046}\InprocServer32\14.0.0.0
查詢如上項的尋找關鍵字為:“Microsoft.Office.Interop.Excel, Version=14.0.0.0”。
正常情況下,刪除如上登錄機碼後前述異常將不再出現。