在某些Excel(2003)工作簿中,当我尝试打印多张工作表时,Excel会将工作表视为单独的打印作业。这使得我一直在写的excel自动化应用程序,因为它导致Adobe PDF打印机停止并询问用户第二个文件名。
看起来它可能与每页的指定打印区域有关,虽然清除(甚至重置)打印区域没有什么区别。
如何强制Excel将所有选定的工作表打印为单个打印作业?(我使用的是虚拟Adobe PDF打印机)
除此之外,如何在打印之前检测Excel何时将一个或多个选定的标签视为单独的打印作业?
我使用C3 / .net3.5自动化Excel 2003并使用Acrobat 7 Pro安装的Adobe PDF打印机进行打印。
答案 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现场。