无法强制转换 COM 对象 (EXCEL)



我的应用程序刚刚添加了一个新功能,允许将数据导出到 Excel 中。它在一台设备上运行良好,但是当我们在第二台设备上实现它时,出现了以下错误:

错误信息:

System.InvalidCastException: 无法强制转换类型的 COM 对象 "Microsoft.Office.Interop.Excel.ApplicationClass"到接口类型 'Microsoft.Office.Interop.Excel._Application'.此操作失败 因为查询接口调用接口的 COM 组件的接口 IID"{000208D5-0000-0000-C000-000000000046}"由于 以下错误:加载类型库/DLL 时出错。(例外情况 结果:0x80029C4A(TYPE_E_CANTLOADLIBRARY((。

该错误可能说它无法加载 DLL,但如果您尝试加载 Excel,这就是问题所在。它无法使用注册表找到"EXCEL.EXE"。

对于某些人来说,从"添加\删除程序:修改"进行简单的Office修复就足以解决问题。

如果您已经尝试过Office修复,则可以通过编辑注册表手动修复它。

以管理员身份打开注册表编辑器,然后转到:

ComputerHKEY_CLASSES_ROOTTypeLib{00020813-0000-0000-C000-000000000046}

这是显示 Excel 安装位置的位置。此时,如果您看到多个版本,"1.9","1.8","1.7",则需要删除额外的条目。例如,Excel 2019 是"1.9",因此您将删除不再安装的其他版本。

一旦你只有一个版本,你还需要检查位数。我已经从 32 位移动到 64 位,但两个密钥仍然存在

ComputerHKEY_CLASSES_ROOTTypeLib{00020813-0000-0000-C000-000000000046}1.9Win32
ComputerHKEY_CLASSES_ROOTTypeLib{00020813-0000-0000-C000-000000000046}1.9Win64

我删除了Win32键,一切又开始工作了。在这些键中,默认值显示"EXCEL.EXE"的完整路径。确保路径正确。

最新更新