I was wondering what I could do to improve the performance of Excel automation, as it can be quite slow if you have a lot going on in the worksheet...
Here's a few I found myself:
ExcelApp.ScreenUpdating = false
-- turn off the redrawing of the screenExcelApp.Calculation = Excel.XlCalculation.xlCalculationManual
-- turning off the calculation engine so Excel doesn't automatically recalculate when a cell value changes (turn it back on after you're done)Reduce calls to
Worksheet.Cells.Item(row, col)
andWorksheet.Range
-- I had to poll hundreds of cells to find the cell I needed. Implementing some caching of cell locations, reduced the execution time from ~40 to ~5 seconds.
What kind of interop calls take a heavy toll on performance and should be avoided? What else can you do to avoid unnecessary processing being done?