我们使用Excel来SpreatSheetML转换为XLS在ASP.NET web服务。此外,如果用户检查右侧的复选框,我们产卵使用Excel打印电子表格中的线程。

最近,我们已经部署在新的环境下的应用程序,然后我们就开始出现问题:第一次有人尝试打印时,Excel似乎挂在服务器上 - 即调用PrintOut方法在工作簿上永远不会返回

但是,如果我们登录到服务器作为应用程序池标识和打开Excel,送东西到打印机,然后再次关闭,打印将从此上工作!

我怀疑Excel中是否显示invisible dialog - 症状是一样的,因为我们前面有,当Excel似乎拖延上一段时间了“不能使用对象链接和嵌入” - 对话即出现在Excel中打开

我知道使用服务器端办公自动化是不好的,但是这是一个传统的应用程序,这是非常难以改变,所以请不要只是劝我重新设计我们的解决方案。

有没有人有任何经验与这种行为?

有帮助吗?

解决方案

好了,没有人似乎也有这个问题。

真正奇怪的是,我的夜间任务(普通.NET .EXE)完全能够印刷的 - 它只是有这个问题我的Web服务

所以我做什么,我早就应该做解决了这个问题:我做了一个简单的Windows服务用的 Topshelf 时,它响应一些MSMQ消息并执行打印,然后我的网络服务可以经由消息队列命令打印输出。

在各方面的效果好很多!

其他提示

我已经没有任何问题(性能较差,挂流程,破碎流程等)的Web服务使用Microsoft Excel,Word和PowerPoint通过互操作打印Office文档为PDF格式结束。我也曾经面临,我怀疑是因为看不见的对话框问题(可能是文件损坏,建议只读已定,文件密码保护,或其他)。

我知道有可用的工具不使用Office,但他们都非常昂贵。我的解决办法是切换到自动化的OpenOffice。 OpenOffice的似乎更加稳定,我已经离开了挂工艺等落后。

所以,虽然我想我说:“不要自动化的Microsoft Office”,我不建议你放弃完全自动化;只是,我已经有的更大的成功自动化的OpenOffice于Microsoft Office。

的SpreadsheetGear用于.NET 可以读取XLS或XLSX工作簿和可以打印到默认打印机而不显示任何对话框(参见WorkbookView.Print()方法)。

您可以下载评估这里

声明:我自己的SpreadsheetGear LLC

和许多人一样,我的的看到这样的行为。它是通过使用Office的API中的服务器,尤其是多线程应用ASP.NET引起的。

不过,你说你不想知道的脚不是搬起石头砸自己,所以有更多的不多说了。你似乎由早期愚昧的后果被困住。


OK,叫我停下来,你听说过的这个的一个:

一个人要求在计算器上的问题。他说,“所以,当我从服务中自动运行Office应用程序坏的事情发生”。因此,约翰·桑德斯说,“所以,不从服务中自动执行Office应用程序从一个桌面应用程序中自动执行它,微软打算做。”

当一个请求进来的东西,需要Excel,你应该创建运行Windows的过程窗体应用程序。该应用程序可能要开始与没有窗,或者你可能需要在远程桌面 的连接。在任何情况下,要执行的任务可以作为命令行参数传递,或者程序可以托管一个WCF服务有发送给它的命令。

此程序可以调用Excel就像Excel中期望被调用。它可以甚至可能处理(每次一个)多个命令到Excel。然而,如果它挂起,则处理可以被杀死,另一个开始。

我从来没有尝试过这一点,但它听起来像它会工作比试图让办公自动化做一些它不是设计做的更好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top