powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / delphi, excel, тормоза при копировании с листа на лист
20 сообщений из 20, страница 1 из 1
delphi, excel, тормоза при копировании с листа на лист
    #39494114
pgiw99oeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть файл эксель (в формате 2003, *xls) с двумя листами (источник и приемник данных), есть прога на дельфи, которая открывает эксель и с одного листа копирует на другой
копируем блоками по 60 строк, находим на листе-источнике диапазон, копируем, вставляем на нужное место в другом листе

эксель 2003 работает быстро, проблемы возникают в эксель 2007 и старше, 50 блоков копируется около 5 минут

если блоков немного (меньше 20), то копирует быстро, за 10 секунд (приемлемое время), чуть объем побольше - все, труба

в блоках есть формулы, думал пересчет влияет, автоматический пересчет отключил, но это не спасло

есть подозрение, что при копировании сохраняется возможность отмены, ресурсы тратятся на возможную отмену
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494118
pgiw99oeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что делать-то, как забороть?
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494121
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pgiw99oeoчто делать-то, как забороть?
Человек копирует или код?
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494125
pgiw99oeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanpgiw99oeoчто делать-то, как забороть?
Человек копирует или код? не человек, программа копирует, т.е. процедуры эксель вызываются
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494155
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pgiw99oeoчто делать-то, как забороть? Для начала код выложить.
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494156
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в 2007 экселе надстроек дополнительных никаких нет?
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494159
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
использовать регионы, а не ячейки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494165
pgiw99oeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борисpgiw99oeoчто делать-то, как забороть? Для начала код выложить.

в цикле выполняется вот такое, копируем со второго листа на первый;
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
  // N_StrokiStaryj, N_StrokiNovyj выше в цикле определяются
  strRow:=IntToStr(N_StrokiStaryj)+':'+IntToStr(N_StrokiStaryj+60);// формируем строку для выбора диапазона
  KnigiXls.WorkBooks[ind_87].Sheets[2].Activate;   // перешли на второй лист, без этого не хочет работать                
  KnigiXls.WorkBooks[ind_87].Sheets[2].Rows[strRow].Select; // выбрали диапазон
  KnigiXls.Selection.Copy;                                       // скопировали
  KnigiXls.WorkBooks[ind_87].Sheets[1].Activate;       // активируем лист
  KnigiXls.WorkBooks[ind_87].Sheets[1].Rows[N_StrokiNovyj].Select;// выбрали ряд с которого вставим
  KnigiXls.ActiveSheet.Paste;   // вставили полностью диапазон с формулами и прочим      
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494166
pgiw99oeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийиспользовать регионы, а не ячейки.
я регионами и пользуюсь, но все равно медленно
причем небольшие файлы, когда надо диапазонов 20 переписать все нормально, больше - тормозить начинает
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494172
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pgiw99oeo> в цикле выполняется вот такое

1. Excel visible в это время?
2. Макросы можно использовать?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494173
pgiw99oeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpА в 2007 экселе надстроек дополнительных никаких нет?на разных машинах пробовал, наверное и без надстроек были
грешу на то, что может быть подвисает когда помнит историю изменений, когда много надо помнить на случай отмены
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494177
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pgiw99oeo> когда много надо помнить на случай отмены

Excel запоминает операцию целиком, т.е. в твоём случае -
копирование всего блока. Запомнить 50 операций - копейки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494180
pgiw99oeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамpgiw99oeo> в цикле выполняется вот такое

1. Excel visible в это время?
2. Макросы можно использовать?
на маленьких файлах visible-invisible не влияет
сначала было инвизибл; когда зависать начало - сделал видимым чтоб посмотреть что происходит, копирований 20 делает в темпе, потом начинает тормозить
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494181
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pgiw99oeo,
я так и думал что будет бездумная копипаста из текста макро-рекордера. И засирание буфера обмена, за что я бы сразу вломил.
Нужно примерно так
Код: pascal
1.
2.
3.
4.
  var ABook: OLEVariant;
  ..
  ABook:=KnigiXls.WorkBooks[ind_87];
  ABook.Sheets[2].Cells[strRow,1].Resize[1, ColCount].Copy(Destination:= ABook.Sheets[1].Cells[N_StrokiNovyj,1].Resize[1, ColCount]);
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494185
pgiw99oeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борисpgiw99oeo,
я так и думал что будет бездумная копипаста из текста макро-рекордера. И засирание буфера обмена, за что я бы сразу вломил.
Нужно примерно так
Код: pascal
1.
2.
3.
4.
  var ABook: OLEVariant;
  ..
  ABook:=KnigiXls.WorkBooks[ind_87];
  ABook.Sheets[2].Cells[strRow,1].Resize[1, ColCount].Copy(Destination:= ABook.Sheets[1].Cells[N_StrokiNovyj,1].Resize[1, ColCount]);

про буфер тоже мысль мелькала у меня
спасибо, завтра попробую
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494265
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для быстрой работы с файлами Excel в делфи нужно использовать библиотеки типа XLSReadWriteII, а OLE не использовать в принципе.
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494669
pgiw99oeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pgiw99oeoСоколинский Борисpgiw99oeo,
я так и думал что будет бездумная копипаста из текста макро-рекордера. И засирание буфера обмена, за что я бы сразу вломил.
Нужно примерно так
Код: pascal
1.
2.
3.
4.
  var ABook: OLEVariant;
  ..
  ABook:=KnigiXls.WorkBooks[ind_87];
  ABook.Sheets[2].Cells[strRow,1].Resize[1, ColCount].Copy(Destination:= ABook.Sheets[1].Cells[N_StrokiNovyj,1].Resize[1, ColCount]);

про буфер тоже мысль мелькала у меня
спасибо, завтра попробуюпопробовал, копирую прямо с листа на лист, но нифига не спасло
странное такое поведение иногда: пользователь получает файл (*.XLS), открывает его 2007 экселем, ничего в нем не делает, сохраняет в формате *.XLS, размер увеличивается с 2 мегабайт до 21 мегабайта... в 10 раз

файлы примерно по 5000 строк, формул в файле примерно 7000 (формулы в основном типа: взять из двух ячеек, просуммировать), тормоза при прокрутке, думал может пересчет влияет, при отключенном пересчете тоже тормоза

вообще надо файлы других пользователей посмотреть, от которых жалоб не было, у них тоже довольно большие файлы
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494683
pgiw99oeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2Для быстрой работы с файлами Excel в делфи нужно использовать библиотеки типа XLSReadWriteII, а OLE не использовать в принципе.там насколько я понял запись блоками идет
попробую может быть, но сомнительно, что будет быстрей чем эксель внутри себя перекинет диапазон с одного листа на другой
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39494689
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pgiw99oeoasutp2Для быстрой работы с файлами Excel в делфи нужно использовать библиотеки типа XLSReadWriteII, а OLE не использовать в принципе.там насколько я понял запись блоками идет
попробую может быть, но сомнительно, что будет быстрей чем эксель внутри себя перекинет диапазон с одного листа на другой
у меня лист с текстовыми данными в 20 колонок на 1000 строк (текст + форматирование ячеек цветом и бордюрами) при использовании XLSReadWriteII формируется за 1.9 секунды. Это для сравнения скорострельности работы.
...
Рейтинг: 0 / 0
delphi, excel, тормоза при копировании с листа на лист
    #39497144
pgiw99oeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем дело в форматировании, отключил раскраску ячеек, все стало быстро работать
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / delphi, excel, тормоза при копировании с листа на лист
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]