2011-04-28 110 views
3

在某些Excel(2003)工作簿中,当我尝试打印多个工作表时,Excel会将工作表视为单独的打印作业。这是我一直在写的Excel自动化应用程序,因为它会导致Adobe PDF打印机停止并要求用户输入第二个文件名。强制Excel将多个工作表打印为单个作业

看起来它可能与每个页面的指定打印区域有关,但清除(或重置)打印区域并没有什么区别。

如何强制Excel将所有选定的工作表打印为单个打印作业?(我正在使用虚拟的Adobe PDF打印机)

除此之外,如何在打印之前检测Excel何时将一个或多个所选标签作为单独的打印作业?

我使用C3/.net3.5自动化Excel 2003,并使用Acrobat 7 Pro安装的Adobe PDF打印机进行打印。

回答

2

使用PrintOutEx()

foreach (Excel.Worksheet ws in wb.Worksheets) 
{ 
    Excel.PageSetup ps = (Excel.PageSetup)ws.PageSetup; 
    ws.PageSetup.Orientation = Excel.XlPageOrientation.xlLandscape; 
    ws.PageSetup.Order = Excel.XlOrder.xlDownThenOver; 
    ws.PageSetup.FitToPagesWide = 1; 
    ws.PageSetup.FitToPagesTall = 50; 
    ws.PageSetup.Zoom = false; 
} 
wb.Worksheets.PrintOutEx(); 
1

根据微软的支持,Excel可能决定后台多个打印作业单个打印请求。一个Excel打印作业覆盖一个或多个打印区域。如果遍历打印区域并调用打印每个打印区域,则重新获得对输出的一些控制。

所有作业完成后,您可以继续将所有作品绑定到一个PDF文件中。前段时间我使用这种方法(使用Win2PDF驱动程序)在现场将Excel转换为PDF。

+0

您可以提供一个链接,指向Microsoft支持所在的位置吗? – sashoalm 2012-10-12 07:48:00

相关问题