WinForm/C# WinForm 平台导入 Excel 常见错误及可能的解决方案

xinggang · 2018年05月25日 · 534 次阅读

注意:

导入 Excel 的电脑需要安装 Office 和 AccessDatabaseEngine,如未安装请先安装再继续后面的内容。

------------------------------------- 帅气的分隔线 -------------------------------------

常见问题一:

有的电脑在导入Excel会遇到问题无法导入,错误如图(有的是中文有的是英文,一个意思):
20180518162214

错误详情:

Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Interop.Excel.Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{000208D5-0000-0000-C000-000000000046}' failed due to the following error: 不支持此接口 (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

解决方案:

步骤一:

对于Excel,删除注册表项:HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7  
对于Word,删除注册表项:HKEY_CLASSES_ROOT\TypeLib\{00020905-0000-0000-C000-000000000046}\1.7

1.7 对应的版本应该是 office2010 以上,如果你用的 office 版本低于 2010,在程序中调用 Excel 时就可能会出现该类异常,正常情况下删除该项即可。 如果进行完第一步该错误仍出现,则需要进行步骤二

步骤二:

Excel,删除注册表项:HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{00020812-0000-0000-C000-000000000046}\InprocServer32\14.0.0.0
Word,删除注册表项:HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{ {00020906-0000-0000-C000-000000000046}}\InprocServer32\14.0.0.0

如果进行完上述两部出现异常,删除完之后重新安装 office。

2019.02.01 更新 又一种错误:

无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类型“Excel._Application”。此操作失败的原因是对 IID 为“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件调用QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。 (异常来自RESULT:0x80029C4A (TYPE_E_CANTLOADLIBRARY)) 20190201110226125

解决方案:

按一楼的方法未解决。
卸载已安装的 Office 2013 未解决。
网上资料说可能是 WPS 的问题,安装WPS后问题解决,正常后卸载 WPS 也是可以的。
估计是 WPS 之前的卸载遗留问题。

20190201140908890

参考资料:

  1. https://www.zhihu.com/question/29501096/answer/164359017
  2. https://blog.csdn.net/clebeg/article/details/41909861

还有种错误: 服务器出现意外情况。 Exception from HERSULT 0x80010105错误
请参考:https://xxb.lttc.cn/topics/169

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册