C#导入Excel2010出现加载DLL失败或者类库未注册的问题,0x8002801D或者0x80029C4A
2013-11-06 10:35
405 查看
最近在客户机器上出现了无法导出报表的问题,错误提示为:
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的映射关系,所以问题才得以解决。
(写的有些混乱,大家见谅~~这个问题困扰了我好几天了,脑袋都大了
!)
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的映射关系,所以问题才得以解决。
(写的有些混乱,大家见谅~~这个问题困扰了我好几天了,脑袋都大了
!)
相关文章推荐
- C#导入Excel2010出现加载DLL失败或者类库未注册的问题,0x8002801D或者0x80029C4A .
- windows 2008 server 下,C# 加载dll失败的问题
- SQL Server2008 备份“已注册的服务器”设置,以及出现导入失败问题的解决办法
- 在加载网上下载的项目时有时候会出现连接失败或者出现Android Studio:Gradle Refresh Failed - 找不到com.android.tools.build:gradle等问题
- SQL Server2008 备份“已注册的服务器”设置,以及出现导入失败问题的解决办法
- 关于进行安装程序出现注册DLL/OCX失败,返回码:0x5问题
- 关于安装.NET Framework 2.0时偶然碰到的问题(提示"Error 205015. 安装程序集..../System.EnterpriseServices.dll失败,原因是出现了系统错误:拒绝访问。")
- C#中加载dll的问题
- 记一次加载Dll失败的问题
- VisualStudio2010旗舰版打开后,出现各种程序包加载失败的问题。
- Rundll加载dll时出现问题 找不到指定模块解决办法
- c#编写ARP欺骗,无法加载 DLL“wpcap”: 找不到指定的模块。loadlibrary("wpcap.dll")失败-找不到指定的模块
- win7下修改注册表问题 模块"jscript.dll"已加载,但对DllRegisterServer的调用失败,错误代码为0x80004005 我是WIN7
- 加载dll时出现的问题
- C#调用mfc写的Dll出现调用导致堆栈不对称问题
- C#.Net 如何动态加载与卸载程序集(.dll或者.exe)3---- 动态加载Assembly应用程序
- c#networkcomms protobuf-net 文件加载出现问题
- win7下修改注册表问题 模块"jscript.dll"已加载,但对DllRegisterServer的调用失败,错误代码为0x80004005 我是WIN7
- 关于javaweb中导入json或者xml文件出现小红叉问题
- 安卓---下拉刷新---上拉加载---解决导入library等自生成库文件失败的问题