.net 无法强制转换COM对象(EXCEL)
我的应用程序刚刚添加了一个新函数,允许将数据导出到Excel中。它在一台设备上运行良好,但当我们在第二台设备上实现它时,出现了以下错误: 错误消息: System.InvalidCastException:无法强制转换类型为的COM对象 将“Microsoft.Office.Interop.Excel.ApplicationClass”更改为接口类型 “Microsoft.Office.Interop.Excel.\u应用程序”。此操作失败 因为接口的COM组件上的QueryInterface调用 由于以下原因,IID“{000208D5-0000-0000-C000-0000000000 46}”失败: 以下错误:加载类型库/DLL时出错。(不适用于 HRESULT:0x80029C4A(类型E\U CANTLOADLIBRARY)).net 无法强制转换COM对象(EXCEL),.net,excel,regedit,.net,Excel,Regedit,我的应用程序刚刚添加了一个新函数,允许将数据导出到Excel中。它在一台设备上运行良好,但当我们在第二台设备上实现它时,出现了以下错误: 错误消息: System.InvalidCastException:无法强制转换类型为的COM对象 将“Microsoft.Office.Interop.Excel.ApplicationClass”更改为接口类型 “Microsoft.Office.Interop.Excel.\u应用程序”。此操作失败 因为接口的COM组件上的QueryInterface调
错误可能会说它无法加载DLL,但如果您试图加载Excel,则问题就出在这里。它无法使用注册表找到“EXCEL.EXE” 对于某些人来说,从Add\Remove programs:Modify执行简单的Office修复就足以解决问题 如果您已经尝试了Office修复,则可以通过编辑注册表手动修复 以管理员身份打开Regedit并转到:
Computer\HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\
这是显示Excel安装位置的位置。此时,如果您看到多个版本,“1.9”、“1.8”、“1.7”,则需要删除额外的条目。例如,Excel 2019是“1.9”,因此您可以删除不再安装的其他版本
一旦你只有一个版本,你也需要检查咬。我已经从32位移动到64位,但两个键仍然存在
Computer\HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.9\0\Win32
Computer\HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.9\0\Win64
我删除了Win32密钥,一切又开始工作了。在这些键中,默认值显示“EXCEL.EXE”的完整路径。确保路径正确。可能重复的路径