C# 操作Excel报错

1. 错误一

1.1 错误信息

Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 服务器运行失败(Exception from HRESULT: 0x80080005(CO_E_SERVER_EXEC_FAILURE))

1.2 原因分析

C#没有通过程序访问Excel的权限。

1.3 解决方案

    1. 点击键盘上的 WIN+ R 快捷键,在弹出的运行窗口中输入 comexp.msc -32,点击确定按钮,打开组件服务。


      运行窗口
    1. 在组件服务 -> 计算机 -> 我的电脑 -> DCOM配置 中找到 Microsoft Excel Application 服务。


      服务列表
    1. 在Microsoft Excel Application 上右键,属性。在弹窗的窗口中选择 安全,启动和激活权限,选择自定义,点击编辑


      授权
    1. 在弹窗中,点击“添加”,输入 everyone, 点击确认


      天基按用户
    1. 选择添加后的用户名,勾选所有的 允许,点击确认保存。


      授权
    1. 选择 配置权限,重复 4-5 步骤
配置权限
  • 7 选择 访问权限, 重复4-5 步骤


    访问权限

2. 错误二

2.1 错误信息

服务器出现意外情况。(异常来自 HRESULT:0x80010105(RPC_E_SERVERFAULT))

2.2 原因分析

可能是安装的某些阅读器或编辑器,修改的Excel的打开配置导致。

2.3 解决方案

    1. 打开电脑的Excel程序,点击文件 -> 选项。


      Excel文件界面
    1. 点击加载项, 选择 “COM 加载项”,点击“转到”。


      加载项
    1. 去掉所有勾中的选项,点击确认。
COM加载项

3. 错误三

3.1 错误信息

消息筛选器显示应用程序正在使用中。(异常来自 HRESULT:0x8001010A(RPC_E_SERVERCALL_RETRYLAYTER))

3.2 原因分析

没有操作权限

3.3 解决方案

以管理员的身份运行软件

4. 错误四

4.1 错误消息

无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型 “Excel._Application”。此操作失败的原因是对 IID 为“{000208D5 -0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败:不支持此接口(异常来自HRESULT:0x80004002(E_NOINTERFACE))。

4.2 原因分析

系统曾经安装过高版本的Office或Wps后卸载,卸载存在残余。例如:卸载了office2013,安装了office2010

4.3 解决方案

4.3.1 解决方案一: 使用office的自动修复功能

    1. 打开 控制面板 —> 程序 —> 程序和功能


      控制面板
    1. 找到安装的Office程序,右键 —> 更改,选择修复即可。


      修复Office

4.3.2 解决方案二: 删除当前Office版本不符合的注册表

    1. 点击WIN + R 键,打开运行窗口,输入 regedit 进入注册表


      打开注册表
    1. 查看office版本及配置位置
      64位Office:
计算机\HKEY_CLASSES_ROOT\WOW6432Node\Interface\{00020970-0000-0000-C000-000000000046}\TypeLib
64位Office配置

32 位Office配置

计算机\HKEY_CLASSES_ROOT \Interface\[00020970-0000-0000-C000-000000000046]\TypeLib
32位Office配置
    1. 根据配置的路径查找,查找到对应的位置,删除掉其他的版本
      64位Office配置中的路径是 {00020905-0000-0000-C000-000000000046}, 版本是 8.7,按照路径查找位置
计算机\HKEY_CLASSES_ROOT\TypeLib\{00020905-0000-0000-C000-000000000046}

该文件夹下的版本号,只保留对应的8.7,删除掉其他的版本即可。


删除其他版本的注册表

32位与64位操作相同,查找相应的位置,删除对应的版本。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容