我创建了一个创建用查询填充的Excel文件的批处理作业,问题如下:
我在代码中使用了WinAPI和SysExcelApplication类。调试后,我看到这些类在使用批处理作业启动时会导致问题。我使用了winAPIServer和fileIOPermission类的托管权限,我的问题仍然存在。
在没有批处理作业的情况下启动时,我的代码运行正常,没有错误。
有没有人有解决我问题的想法?
这是错误消息: 会话服务器端替换(RunAs)尝试调用仅不可用于客户端处理的方法。
答案 0 :(得分:2)
您无法在服务器上执行的批处理作业中使用SysExcelApplication,因为Excel是需要访问客户端UI的客户端应用程序,这与模拟的服务执行不兼容。
我知道这不是应该的逻辑,但几个月前,当我在客户端遇到这个问题时,我得到了Microsoft Engeenering Team的回答。
如果你可以通过使用CSV文件或类似的东西来避免它,那么可靠的解决方案根本不使用Excel;或者让这些批次在客户端层上运行,这会强制您始终在客户端会话上打开运行批次的客户端(并使用客户端许可证)
答案 1 :(得分:1)
在WinAPI方面,有一个WinAPIServer类与WinAPI做同样的事情。这是我使用的代码示例:
if (xGlobal::clientKind() == ClientType::Client)
{
winapi::copyfile(File, strReplace(File,SourceFolder, FailureFolder));
winapi::deletefile(File);
}
else
{
winapiServer::copyfile(File, strReplace(File,SourceFolder, FailureFolder));
winapiServer::deletefile(File);
}
答案 2 :(得分:0)
在Dynamics AX中,您可以创建xml文件。然后创建并调用PowerShell脚本以将xml文件转换为excel文件。这一切都可以在AX批处理作业中完成。