我创建了一个简单的PowerShell脚本,它将创建一个excel实例并保存工作簿:
$excel = New-Object -ComObject Excel.Application
$workbook = $excel.Workbooks.Open("C:\Test\foo.xls")
$workbook.SaveAs("C:\Test\bar.xls")
# cleanup code ...
当我直接从powershell运行它时,它工作正常。 我创建了一个运行它的计划任务,当我有选项设置时,只有当用户登录时才会运行"那么它会运行良好。
当我更改此选项以运行用户是否登录时,尝试打开/保存文件将失败。我使用的帐户具有正确的权限。我将帐户设置为以服务身份登录。
有什么建议吗?
答案 0 :(得分:6)
我被这个烧了,不想重写代码。我看到你的帖子和其他一些让我即将放弃的帖子。但是,我的坚持得到了回报。我试图让Jenkins运行一个脚本来清点我们的生产环境并输出到Excel。我不想要文本文档,因为我突出显示了在RED中不匹配的软件版本,因此需要Excel。
以下是对我有用的答案:
您必须创建一个文件夹(或64位窗口上的两个文件夹):
(32位,总是)
C:\的Windows \ system32 \设置\ systemprofile \ Dektop
(64位)
C:\的Windows \ Syswow64资料\配置\ systemprofile \桌面
有人提供的链接作为来源:
http://www.patton-tech.com/2012/05/printing-from-scheduled-task-as.html
我的来源是:
答案 1 :(得分:2)
我记得在C#应用程序中必须做类似的事情,在Visual Studio上构建它时运行良好,但在CI服务器上的服务下运行失败。我认为这是Office Automation本身的限制,并且Microsoft不建议/支持这样做,在这里查看Office的服务器端自动化的注意事项 - http://support.microsoft.com/kb/257757。它显示了问题和替代方案。
就我而言,我不得不放弃Office Interop,并使用EPPlus(http://epplus.codeplex.com/)来处理excel。它工作得很好,而且速度也快得多。