强制Excel将多个工作表打印为单个作业

时间:2011-04-28 16:20:48

标签: c# .net excel pdf adobe

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

看起来它可能与每页的指定打印区域有关,虽然清除(甚至重置)打印区域没有什么区别。

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

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

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

2 个答案:

答案 0 :(得分:3)

使用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 :(得分:1)

根据Microsoft支持,Excel可能决定为单个打印请求假脱机多个打印作业。单个Excel打印作业涵盖一个或多个打印区域。如果遍历打印区域并调用打印每个打印区域,则可以重新获得对输出的控制。

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