C# .NET 2013导出DataGridView至Excel遇COM错误,求助解决
问题原因分析
这个报错本质上是Office Interop的COM组件注册信息出了问题。大概率是这一个月里你的系统做了Office版本更新、卸载旧Office时残留了无效注册项,或者系统更新后注册表出现了冲突,导致.NET程序无法正确将Microsoft.Office.Interop.Excel.ApplicationClass转换到_Application接口——报错里的IID{000208D5-0000-0000-C000-000000000046}就是_Application接口的标识,系统找不到它的有效注册记录,就抛出了TYPE_E_LIBNOTREGISTERED错误。
具体解决步骤(注册表清理)
要修复这个问题,你需要清理掉无效的Excel TypeLib注册项,具体操作如下:
- 打开注册表编辑器:按下
Win + R组合键,输入regedit后回车。 - 根据系统位数找到对应注册表路径:
- 如果你是64位系统,需要找两个路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{00020813-0000-0000-C000-000000000046}HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{00020813-0000-0000-C000-000000000046}
- 如果你是32位系统,只需要找:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{00020813-0000-0000-C000-000000000046}
- 如果你是64位系统,需要找两个路径:
- 删除无效注册项:右键点击上述路径里的
{00020813-0000-0000-C000-000000000046}子项,选择「删除」,确认操作即可。 - 重启应用/开发环境:关闭你的Visual Studio 2013和相关程序,重新打开后再运行导出代码,应该就能正常工作了。
温馨提示:删除注册表项前,右键点击要删除的项选择「导出」备份一下,万一误操作还能恢复。
内容的提问来源于stack exchange,提问作者Lee Hopkins
相关产品推荐
相关产品推荐

