System.InvalidCastException:“无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制转换为接口类

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

 

这个错误不是代码的问题,需要安装下面步骤删除注册表内容:

开始>运行> regedit --> HKEY_CLASSES_ROOT-->TypeLib-->{00020813-0000-0000-C000-000000000046} --> 1.8/1.7 (删除这些)

解决原理: 这个问题可以通过从更高版本的Office中删除剩余的无效注册表项来解决。按照上述步骤操作。

引起原因: 如果您已将Microsoft Office版本从Office 2010降级到Office 2007,或从Office 2013降级到Office 2010或2007,则此问题是由剩余注册表项引起的。

摘自:https://docs.microsoft.com/zh-cn/archive/blogs/dau-blog/how-to-solve-unable-to-cast-com-object-of-type-microsoft-office-interop-excel-applicationclass-to-interface-type-microsoft-office-interop-excel-_application

 

最终找到原因

必须每次实例一个对象    appExcel = new Excel.Application();

每次打开文件要new
appExcel.Workbooks.Open(fullName);

你可能感兴趣的:(c#)