Microsoft.Office.Interop.Excel PrintOut引发错误

时间:2014-05-06 20:07:46

标签: c# windows-services excel-interop

我在64位Windows 7桌面工作站上的.Net Framework 4.5 Windows服务项目中使用Microsoft.Office.Interop.Excel,除了PageSetup属性以外,一切似乎都在工作,更重要的是Worksheet对象的PrintOut方法

以下是代码:

Microsoft.Office.Interop.Excel.Application ExcelApp = null;
Microsoft.Office.Interop.Excel.Workbook WBook = new Microsoft.Office.Interop.Excel.Workbook;
Microsoft.Office.Interop.Excel.Worksheet WSheet = new Microsoft.Office.Interop.Excel.Worksheet);

ExcelApp = new Microsoft.Office.Interop.Excel.Application();

WBook = ExcelApp.Workbooks.Add();

WSheet = WBook.Worksheets[1];

//Do some stuff with the sheet

//None of this works, throws an error: Unable to set the Orientation property of the PageSetup class
WSheet.PageSetup.Orientation = Microsoft.Office.Interop.Excel.XlPageOrientation.xlLandscape;
WSheet.PageSetup.Zoom = false;
WSheet.PageSetup.FitToPagesWide = 1;
WSheet.PageSetup.FitToPagesTall = false;

//Throws Error (see below)
WSheet.PrintOut(null, null, null, null, null, null, null);

PrintOut()错误: 未安装任何打印机。要安装打印机,请单击“文件”选项卡,然后单击“打印”。单击“No Printers Installed”,然后单击“Add Printer”。按照“添加打印机”对话框中的说明进行操作。

我的设备和打印机中肯定有打印机。我有一台网络打印机设置为我的默认值。我甚至已将此打印机添加到Win.ini中,因为我在其他帖子中看到过此建议,但无济于事。

1 个答案:

答案 0 :(得分:1)

我在写这个问题时想到了这一点。

确保在设置了打印机的帐户和指定的默认打印机下运行Windows服务。我在本地服务帐户下运行该服务,一旦我将其切换为在我的个人帐户下运行,PageSetup属性和PrintOut()方法都有效!