Цитата:
Сообщение от
Pandasama
Имеется отчет в Excel, при некоторых условиях достигающий 100 тысяч строк.
В нем необходимо сделать группировки по строкам.
При 100 тысячах строк для группировки есть 20 тысяч рэнджей.
Группировка идет через обычный COM, метод .group(), что при указанных объемах занимает чуть больше часа времени.
Проверяю
X++:
static void Job_test(Args _args)
{
ComExcelDocument_RU ComExcelDocument_RU;
Com comRange;
MSOfficeBookMark_RU bookMark;
int nextI;
int timeNowBegin = timeNow();
;
ComExcelDocument_RU = new ComExcelDocument_RU();
ComExcelDocument_RU.newFile('',false);
for (nextI = 1; nextI <= 20000; nextI++)
{
bookMark = int2str((nextI-1)*10 + 1)+':'+int2str(nextI*10 - 2);
comRange = ComExcelDocument_RU.findRange(bookMark);
comRange.group();
}
ComExcelDocument_RU.visible(true);
info(time2str(timeNow()-timeNowBegin,1,1));
info('end');
}
20 тысяч групп было создано за 00:07:46. Т.е. примерно за 8 минут. При этом последняя используемая строка Excel имеет номер 199`999. Т.е. 200 тысяч строк
Тест выполнял на Ax4.0. Почему у Вас получилось время более 1 часа ищите сами
PS: Надеюсь, вы метод select() не используете? Для программного формирования Excel обычно он не нужен и лишь является лишним тормозом. Используется только как завершающая команда непосредственно перед открытием.