Как известно, взаимодействие с Excel и .Net происходит очень медленно. Я знаю возможность копировать массив значений в объект рабочего листа на одном дыхании, но по моему секундомеру даже одной команды (в VB.Net) типа:Нужен более быстрый метод взаимодействия Excel
WS.Range(--range string here--).Value = array
... принимает более 0,3 с! Это связано с тем, что моя рутина записывает десятки массивов на каждый рабочий лист, и в каждой книге есть несколько рабочих листов, и я, вероятно, буду итерации по нескольким книгам.
Если бы был способ записи прерывистых, непрямоугольных групп ячеек сразу, то я мог бы сделать весь WS с одной командой записи. Но я не думаю, что есть способ сделать это, сохранив исходные значения для ячеек inbetween. Эти книги предварительно отформатированы, поэтому я должен оставить определенные ячейки как есть.
Что-нибудь, что я могу сделать, чтобы ускорить это?
Вы пытались отключить расчет, а затем снова включить его в конце? Не забудьте сделать recalc все. Кроме того, попробуйте сделать это из VBA - если он все еще медленный, то .Net не виноват. – Ben
Спасибо, что на самом деле сильно изменилось. Я знал об этой практике, но не думал, что расчет был настолько большим (для этих рабочих таблиц так или иначе). Просто предположил, что узким местом был .Net-Com interop. Не уверен, как дать ответ на комментарий, так что предположим, что я просто отправлю его сам. – Tekito
Вы также можете попросить Бена отправить ответ, чтобы вы могли его принять :) – user850010