性能下降设置Excel工作表打印设置

使用用于Excel的Microsoft Office Interop库,我已经在VB.Net中编写了一个例程,它创build了大量的Excel工作表,然后填充它们,然后格式化它们进行打印。 对于每个工作表,我称这个小方法来设置打印设置:

Public Sub SetDefaultReportPrintSettings(orientation As ReportSheetOrientation, ws As Excel.Worksheet) CType(ws.Parent, Excel.Workbook).Application.Windows(1).Zoom = 90 With ws.PageSetup Select Case orientation Case ReportSheetOrientation.Portrait : .Orientation = Excel.XlPageOrientation.xlPortrait Case ReportSheetOrientation.Landscape : .Orientation = Excel.XlPageOrientation.xlLandscape End Select .Zoom = False .FitToPagesTall = 1 .FitToPagesWide = 1 .LeftMargin = ws.Application.InchesToPoints(If(orientation = ReportSheetOrientation.Portrait, 0.75, 0.5)) .RightMargin = ws.Application.InchesToPoints(0.5) .TopMargin = ws.Application.InchesToPoints(0.75) .BottomMargin = ws.Application.InchesToPoints(0.75) .CenterHorizontally = True End With End Sub 

当我做基准testing的时候,这个小组显然需要大约0.98秒。 我不明白为什么切换一些设置需要很长时间。 它看起来可能不多,但是当生成数百(或更多)张时,这实际上增加了常规时间。 Excel application实例是隐藏的,所以我不认为这是一个屏幕更新问题。

任何方式使这个更快?

Chris Neilen的评论(在PageSetup修改期间设置Application.PrintCommunication=False )显着改善了我的运行时间。 根据文档,Excel默认情况下正在与打印机进行通信,这有助于解释性能下降。

通过将Excel视图设置为“ Normal而不是“ Page Break Preview我获得了更大的速度增益。 这是一个很大的区别,不是在PageSetup代码中,而是在我的其他Excel例程中。 文档再次解释了Excel对分页符做了额外的计算。

https://msdn.microsoft.com/en-us/library/office/ff835544.aspx

https://support.microsoft.com/en-us/kb/199​​505