C#導入Excel2010出現加載DLL失敗或者類庫未註冊的問題,0x8002801D或者0x80029C4A .

最近在客戶機器上出現了沒法導出報表的問題,錯誤提示爲:app

System.InvalidCastException: 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: 加載類型庫/DLL 時出錯。 (Exception from HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)).
經過Google搜索此問題,基本都是表示安裝過不一樣版本的office,須要修改註冊表刪除不一樣版本的註冊表信息,參考連接以下:
點擊打開連接
通過查找註冊表未發現有其餘版本office的殘留信息,並且 HKEY_CLASSES_ROOT\interface 下的GUID'{000208D5-0000-0000-C000-000000000046}‘對應的TypeLib居然不是office而是WPS的,而且WPS安裝目錄下不存在此項,因而就把HKEY_CLASSES_ROOT\interface 下的GUID'{000208D5-0000-0000-C000-000000000046}‘對應的TypeLib改爲了office的GUID
 
修改以後

 
修改保存以後錯誤提示變成了:
 System.Runtime.InteropServices.COMException (0x8002801D): 庫沒有註冊。 
而後嘗試手工註冊EXCEL.EXE,註冊失敗。,沒辦法只能再次求助Google,看到如下連接:
http://bbs.csdn.net/topics/390622891
發現跟我出現的問題出奇的類似,按照上面說的卸載了客戶機上的WPS,重裝了office2010,悲催的是問題依舊。
通過多般折騰,仍是沒什麼更好的辦法。後來又從新看了一遍以前查的資料,基本能夠肯定就是WPS搶鮮版的問題,而後我就在WPS官網下載了個我的版安裝上,居然神奇的解決了~~~
結束語:其實說到底這個問題就是因爲WPS惡意更改了office的Com組件註冊權限,使得office的com組件不能註冊,因此WPS和office仍是不要一塊兒用了,據我我的猜想產生這個問題的緣由多是:客戶剛開始安裝了WPS早期版本,而咱們的售後服務人員給客戶安裝軟件的時候安裝了office2010,這個時候是沒有問題的,可是長時間後客戶進行了WPS的升級升級到了最新版,WPS最新版讓office的com組件註冊失效,因此出現了沒法加載DLL的錯誤,而此次我重裝office並無使office成功註冊,即便卸載了WPS仍是沒能成功註冊COM組件,由於註冊表裏可能還殘留WPS的信息,因此致使註冊表中的關於調用Excel的註冊信息混亂,所以當我重裝WPS以後WPS的註冊信息又從新寫入註冊表而且替換了office的映射關係,因此問題才得以解決。
相關文章
相關標籤/搜索