小编xar*_*arx的帖子

Excel 互操作 - 远程过程调用失败或 RPC_E_SERVERFAULT

我们有一个内部调用 excel 的 C# 应用程序。它使用 Microsoft.Office.Interop.Excel.dll 来实现。该应用程序适用于大多数装有 Excel 的计算机,但不适用于我的计算机。

最初,应用程序因 HRESULT 0x800706BE 失败(远程过程调用失败)。我尝试了几乎所有在网上找到的建议,但都没有成功。然后我卸载了我的 MS Office 2013 Pro,并安装了 Office 365 v2013。应用程序在同一行代码上仍然失败,但现在 HRESULT 0x80010105 (RPC_E_SERVERFAULT)。

有什么建议可以让excel互操作工作吗?我的猜测是某些 Windows 服务未启动或 DCOM 组件未注册。但我不知道是哪一个。

细节:

  • Windows 7 x64、MS Office 2013 专业版/365 专业增强版
  • 它是一个 C# 应用程序。它是使用 VS2010 for .NET 4.0 编译的,但即使应用程序是使用 VS2012 for .NET 4.5 编译的,也会出现问题。使用不同版本的 Microsoft.Office.Interop.Excel.dll。

我认为三个事实很重要:

  • 该应用程序可在其他计算机上运行,​​因此问题的原因不是该应用程序。
  • 即使重新安装(稍微不同的版本)excel (2013) 后,该应用程序也无法运行,因此这可能不是 excel 本身的问题。
  • 我使用SysInternals的ProcessMonitor发现应用程序确实成功实例化了excel,并且excel成功(?)读取了.xlsx文件。但是后来excel失败了。

我还使用了 VS2010 调试器来找出发生了什么:

  • 这是代码的核心。它在 Open 的最后一行失败:

    using Excel = Microsoft.Office.Interop.Excel;
    object misValue = System.Reflection.Missing.Value;
    
    Excel.Application myExcelApp = new Excel.Application();
    myExcelApp.Visible = false; …
    Run Code Online (Sandbox Code Playgroud)

microsoft-office automation rpc microsoft-excel

4
推荐指数
1
解决办法
1万
查看次数