最近在客戶機器上出現(xiàn)了無法導(dǎo)出報表的問題,錯誤提示為: 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,需要修改注冊表刪除不同版本的注冊表信息,參考鏈接如下:
點擊打開鏈接 經(jīng)過查找注冊表未發(fā)現(xiàn)有其他版本office的殘留信息,而且HKEY_CLASSES_ROOT\interface 下的GUID'{000208D5-0000-0000-C000-000000000046}‘對應(yīng)的TypeLib竟然不是office而是WPS的,并且WPS安裝目錄下不存在此項,于是就把HKEY_CLASSES_ROOT\interface 下的GUID'{000208D5-0000-0000-C000-000000000046}‘對應(yīng)的TypeLib改成了office的GUID
修改之后
修改保存之后錯誤提示變成了:
System.Runtime.InteropServices.COMException (0x8002801D): 庫沒有注冊。
然后嘗試手工注冊EXCEL.EXE,注冊失敗。,沒辦法只能再次求助Google,看到以下鏈接:
http://bbs.csdn.net/topics/390622891
發(fā)現(xiàn)跟我出現(xiàn)的問題出奇的相似,按照上面說的卸載了客戶機上的WPS,重裝了office2010,悲催的是問題依舊。
經(jīng)過多般折騰,還是沒什么更好的辦法。后來又重新看了一遍之前查的資料,基本可以確定就是WPS搶鮮版的問題,然后我就在WPS官網(wǎng)下載了個個人版安裝上,竟然神奇的解決了~~~
結(jié)束語:其實說到底這個問題就是由于WPS惡意更改了office的Com組件注冊權(quán)限,使得office的com組件不能注冊,所以WPS和office還是不要一起用了,據(jù)我個人猜測產(chǎn)生這個問題的原因可能是:客戶剛開始安裝了WPS早期版本,而我們的售后服務(wù)人員給客戶安裝軟件的時候安裝了office2010,這個時候是沒有問題的,但是長時間后客戶進行了WPS的升級升級到了最新版,WPS最新版讓office的com組件注冊失效,所以出現(xiàn)了無法加載DLL的錯誤,而這次我重裝office并沒有使office成功注冊,即使卸載了WPS還是沒能成功注冊COM組件,因為注冊表里可能還殘留WPS的信息,所以導(dǎo)致注冊表中的關(guān)于調(diào)用Excel的注冊信息混亂,因此當(dāng)我重裝WPS之后WPS的注冊信息又重新寫入注冊表并且替換了office的映射關(guān)系,所以問題才得以解決。 |
|
來自: rookie > 《技術(shù)帖》