采用的office组件来打开excel,在代码中第10行的时候提示如下异常:
其他信息: 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application”。此操作失败的原因是对 IID 为“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 找不到 。 (异常来自 HRESULT:0x80030002 (STG_E_FILENOTFOUND))。
相同的代码在别人的机子上就没问题,以前自己也可以运行成功,但后面不知道为什么就突然不行了,有人说是安装了多个office版本的原因,具体不知道怎么解决,我安装的是office2007,求各位大虾帮忙解决下!
1 bool isSuccess = false; 2 Excel.XlFixedFormatType targetType = Excel.XlFixedFormatType.xlTypePDF; 3 object missing = Type.Missing; 4 Excel.Workbook workBook = null; 5 Excel.Application application = new Excel.Application(); 6 try 7 { 8 object target = targetPath; 9 object type = targetType; 10 workBook = application.Workbooks.Open(sourcePath, missing, missing, missing, missing, missing, 11 missing, missing, missing, missing, missing, missing, missing, missing, missing); 12 workBook.ExportAsFixedFormat(targetType, target, Excel.XlFixedFormatQuality.xlQualityStandard, true, false, missing, missing, missing, missing); 13 isSuccess = true; 14 }
excel版本声明看看有没有错,再试试重新引用com组件
建议使用nopi组件
没问题那人用的office2003?
应该是office版本问题
lz,来我的博客看关于标题为《无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application”》(文章地址:http://www.cnblogs.com/sunxin88/articles/3456395.html),也许会帮到你。
最近我在调用Interop.Word时,也遇到了这个问题,用文章中删除注册表项方法解决了。这个问题根源应该是安装了不同版本的Office。
HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}
能把注册表中这个的完整目录给我说下吗?
我找不到。。直接搜也搜不到
找到了,试过了,但是不行
报的异常是:因以下错误而失败: 找不到 。
那边是:因以下错误而失败: 库没有注册。
是不是不一样?