Мне было интересно, что я могу сделать, чтобы улучшить производительность автоматизации Excel, поскольку это может быть довольно медленно, если у вас много чего происходит на листе...
Вот несколько я нашел себя:
-
ExcelApp.ScreenUpdating = false
- отключить перерисовку экрана -
ExcelApp.Calculation = Excel.XlCalculation.xlCalculationManual
- отключение механизма вычисления, поэтому Excel не будет автоматически пересчитываться при изменении значения ячейки (верните его после завершения) -
Уменьшить количество вызовов на
Worksheet.Cells.Item(row, col)
иWorksheet.Range
- мне пришлось опросить сотни ячеек, чтобы найти ячейку, в которой я нуждался. Реализовав некоторое кэширование ячеек, сократилось время выполнения от ~ 40 до ~ 5 секунд.
Какие вызовы между вызовами сильно сказываются на производительности, и их следует избегать? Что еще вы можете сделать, чтобы избежать ненужной обработки?