“没有安装打印机。”通过WCF服务使用excel 2003 interop sheet.PageSetup时出现问题

时间:2010-05-07 14:50:27

标签: interop excel-2003 office-interop

我们有一个WCF服务,它从模板生成一个Excel文件,并以字节数组的形式将其反馈给客户端。出于某种原因,我们在尝试执行此操作时遇到错误:

sheet.PageSetup.CenterHeader = sheet.PageSetup.CenterHeader.Replace("[customerName]", customerName).Replace("[dateTime]", date.ToShortDateString());

当它到达此行时,我们收到以下错误消息:

No printers are installed. To install a printer:
In Microsoft Windows 2000, click Start, point to Settings, and then click Printers. Double-click Add Printer.
In Microsoft Windows XP, click Start, and then click Printers and Faxes. Under Printer Tasks, click Add a printer.
Follow the instructions in the wizard.

该服务在LocalSystem帐户下运行。当我们第一次部署这项服务时,它是一台x64机器,并遇到了同样的问题。我们的开发环境是x86,所以我们将服务移动到x86的另一台服务器,它运行良好一段时间。它最近停止工作,现在再次给我们这个错误消息。我很确定这是因为最近在app服务器上进行了大量的Windows更新。

有趣的是,我尝试将服务更改为“允许与桌面交互”并且它不起作用,但是当我们的系统管理员执行相同的操作时,它适用于一个文件生成但现在无法正常工作。

计算机上安装了打印机,包括域帐户和本地帐户。我也尝试在不同的帐户下运行该服务,但由于某些SSPI错误,我无法连接到该服务。我们尝试使用网络服务帐户,但随后应用无法看到该服务。我们在每次更改后都重新启动了服务也无济于事。

我对表单对象的“PageSetup”部分的了解是,即使您不打印,也需要安装打印机才能访问它。我无法想办法让机器认为LocalSystem帐户安装了打印机。

1 个答案:

答案 0 :(得分:0)

我们发现了问题,我的配置文件仍指向x64服务器:(

至于为什么它不适用于x64(据我所知) - 因为office 2003是x86,它需要一个x86打印后台处理程序才能正常工作。我不知道有什么方法可以在x64操作系统上安装x86打印假脱机程序,所以我们只是把它放在x86服务器上。