问题描述
错误提示:无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application”。此操作失败的原因是对IID为“{000208D5-0000-0000-C000-000000000046}”的接口的COM组件调用QueryInterface因以下错误而失败:加载类型库/DLL时出错。(异常来自HRESULT:0x80029C4A(TYPE_E_CANTLOADLIBRARY))。请问是怎么回事?office都重装了好几次
解决方案
解决方案二:
使用NPOI操作Excel。
解决方案三:
OpenXMLisyourbestfriend.Fastandminimaldependency.
解决方案四:
HRESULT:0x80030002无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的COM对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。此操作失败的原因是对IID为“{00020970-0000-0000-C000-000000000046}”的接口的COM组件调用QueryInterface因以下错误而失败:找不到。(异常来自HRESULT:0x80030002(STG_E_FILENOTFOUND))。上次是HRESULT:0x80004002(E_NOINTERFACE),修复了一下office变成如上所示。出现原因:可能是安装office时安装过不同版本造成的。本人安装的是office2003,并安装过office2007的兼容包,也安装过officevisio2007解决办法:在注册表中找到:HKEY_CLASSES_ROOTTypeLib{00020813-0000-0000-C000-000000000046}1.6删除之就可以了。因为我用的是office2003对应的是1.5,所以删除1.6office2007对应的是1.6,所以要根据情况判断。(我的是安装了2007之后有安装了2010,10可以,07不可以,我后来卸载掉10,用07版测试发现该注册表项下1.7还在,所以删除掉1.7,07版就正常了)后记: 一般来说,一个COM对象在提供的时候,通常还会提供一个类型库,在其中定义了COM对象的所有方法名称、参数名称、属性名称等等信息。我们要做的就是从类型库中取出这些信息。当然,某些只供C++程序员使用的COM对象没有类型库,而代之以C++的头文件和/或idl文件,对这种情况,一般没有办法在程序中枚举出对象的方法属性:毕竟去找C++头文件不太现实,何况在非开发环境下,根本就没有头文件的说。 在一般情况下,COM对象的TypeLib信息存储在注册表中:在HK_CLASSROOTCLSID{ClassID}的注册表项下,有一个名为TypeLib的子项,其中定义了这个COM对象类型库的ID;而在HK_CLASSROOTTypeLib注册表项下,列举了系统中所有TypeLib。