Excel Interop RefreshAll方法不适用于远程计算机

时间:2015-04-14 07:39:47

标签: c# .net excel wmi excel-interop

我有两台机器:Server&客户端

服务器计算机:创建一个Console .Net应用程序,它实例化Excel Interop并为工作簿调用RefreshAll方法。

static void Main(string[] args)
{
    MyApp = new Excel.Application();
    MyApp.Visible = false;
    MyApp.DisplayAlerts = false;
    MyBook = MyApp.Workbooks.Open(@"C:\RefreshSample.xlsm");
    Console.WriteLine("Giving refresh call..");

    MyBook.RefreshAll(); //refreshes pivots within workbook

    MyBook.SaveAs(@"C:\Copy1.xlsm");
    Console.WriteLine("Excel Refresh call finished");
    MyBook.Close();
    MyApp.Quit();

}

客户端计算机:创建一个使用WMI调用远程服务器.Net控制台应用程序的Console .Net应用程序

public static void Main()
{
    ConnectionOptions options =  new ConnectionOptions();
    ManagementScope scope = new ManagementScope("\\\\remoteIP\\root\\cimv2", options);
    scope.Connect();
    // Get the object on which the 
    // method will be invoked
    ObjectGetOptions objectGetOptions = new ObjectGetOptions();
    ManagementPath managementPath = new ManagementPath("Win32_Process");
    ManagementClass processClass = new ManagementClass
        (scope, managementPath, objectGetOptions);
    object[] methodArgs = { @"C:\RefreshExcelConnections.exe", null, null, 0 };
    //Execute the method 
    object result = processClass.InvokeMethod("Create", methodArgs);
    //Display results
    Console.WriteLine("Creation of process returned: " + result);
    Console.WriteLine("Process id: " + methodArgs[3]);
    Console.ReadKey();
}

观察:

  • 通过登录服务器并执行EXE,我在独立模式下运行时,Server Console应用程序可以正常运行。它打开Excel应用程序,正确刷新Excel文件并关闭Excel应用程序。
  • 客户端控制台应用程序,当在服务器应用程序中注释 .RefreshAll()时,能够在远程服务器计算机上创建Excel应用程序,另存为..并正确关闭Excel应用程序。我通过查看Server机器的任务管理器和那里生成的新文件来验证这一点。

问题:

  • 客户端控制台应用程序,当在服务器应用程序中取消注释 .RefreshAll()时,能够在远程服务器计算机上创建Excel应用程序。它似乎停留在这一点上。即使在等待这么多时间之后,也不会发生刷新,另存为......以及关闭Excel应用程序。

客户端和服务器计算机都在同一个域中,我在相同的域帐户下运行客户端应用程序,该帐户也添加到服务器计算机上的管理员组。

有任何线索吗?

更新 使用 PsExec ,我能够以交互模式打开服务器应用程序。因此,在这种情况下不使用使用WMI的客户端应用程序。这是我在客户端计算机上以交互模式打开服务器应用程序的命令。

psexec -i 0 \\RemoteServer C:\FolderPath\RefreshExcelConnections.exe

有一个弹出窗口出现在远程服务器上,它会卡住。该弹出窗口标题为"多维连接11.0"它要求分析服务器名称和凭据。我尝试在弹出窗口中提供凭据但是它给出了错误"打开连接失败"没有任何具体错误。我还检查了数据连接文件(.ODC)是否放在C:中,并且运行应用程序的用户可以访问它。而且这个Windows用户也可以访问Cube服务器。所以我不确定为什么在远程调用执行期间会弹出这个连接错误。

0 个答案:

没有答案