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