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的映射关系,因此问题才得以解决。
相关文章
相关标签/搜索