我有一个小的.NET应用程序,我通过任务计划程序在Windows 2008 Server下运行。这个应用程序需要打开一个excel文件,然后将其保存为csv。当我尝试打开工作簿时,任务失败。如果我在没有任务调度程序运行的情况下手动运行它,该应用程序工作正常。如何使用“与桌面交互”从调度程序运行Windows 2008任务
我已将它设置为“以最高权限运行”并已选中“运行天气用户已登录或未登录”。
我的猜测是这个过程需要与桌面进行交互,类似于检查服务上的“与桌面交互”标志。但是我一直无法为计划任务找到类似的东西。
这里是失败的代码:(失败的workbook.open调用)
public static void ConvertExcelToCsv(string source, string destination)
{
if (File.Exists(destination)) File.Delete(destination);
Application xl = new Application();
try
{
Workbook workbook = xl.Workbooks.Open(source, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Worksheet ws = (Worksheet)workbook.Sheets[1];
ws.SaveAs(destination, XlFileFormat.xlCSV, Type.Missing, Type.Missing, false, false, Type.Missing, Type.Missing, Type.Missing,true);
Marshal.ReleaseComObject(ws);
}
finally
{
xl.DisplayAlerts = false;
xl.Quit();
Marshal.ReleaseComObject(xl);
}
}
它的工作原理!这太疯狂了,我永远也找不到那个谢谢。另外上面的链接是不正确的,你可以找到这里描述的文章:http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91 – Kelly 2009-11-05 15:16:45
你也可以需要为驱动服务器上的Office自动化的用户帐户禁用UAC - 这对我来说是最后的结局。 – 2011-02-15 22:52:35
我跟着没有为我工作的解决方案。我对为我工作的“Microsoft Excel应用程序”的dcom标识做了一些更改。我已将身份更改为“此用户”并提供了管理员帐户凭据。这对我来说工作得很好,我们的Sharepoint Webpart开始按照它应该的方式工作。 – 2011-02-15 22:52:52