Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
объём данных небольшой,
1500 строк, 460 Кб данных, пишет 15 минут. Антивирус отключен.
обычным обращением к ячейкам (да, я знаю что правильней писать блоком)
Но та же программа, запущенная на машине с офисом 2003 отрабатывает за 26 секунд
Примерно столько же на офисе 2010.

Вопрос -
1) Сталкивались ли с таким
2) Можно ли лечить
3) Какого лешего :)
13 ноя 20, 13:41    [22231384]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31768

use RANGE, luke!

Posted via ActualForum NNTP Server 1.5

13 ноя 20, 13:46    [22231389]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Мимопроходящий,

это понятно.
хотя не всегда возможно (на лист вставляется куча формул)

ну и вопрос не в том.
13 ноя 20, 13:57    [22231397]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31768

13.11.2020 13:57, _avz пишет:
> это понятно.
> хотя не всегда возможно (на лист вставляется куча формул)

одно другому не третье!

Posted via ActualForum NNTP Server 1.5

13 ноя 20, 14:02    [22231402]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
booby
Member

Откуда:
Сообщений: 2254
_avz,

для твоих объемов считай, что все, что больше 10 секунд - недопустимо медленно,
независимо от версии Excel и способа его заполнения.

А так да, в каждой следующей версии Excel как com-сервер меняет свои характеристики.
Что-то становится немного быстрее, а что-то может стать и много хуже.
В среднем, в режиме удаленного ole-сервера, замедление есть...

Идея любого ускорения в этом месте строится на базе укрупнения объемов взаимодействия между процессами.
Например, создай спец. надстройку в Excel специально предназначенную для взаимодействия с твоей программой.
Данные ей отдавай, слепляя их в строки или вообще внешним файлом.
Ее и протестировать можно будет в режиме работы "сама с собой".

В таком случае, у тебя оценка появится приемлемости качества кода самой надстройки.
Так, не зная деталей, методом пол-потолок, можно предложить считать, что пока такая надстройка работает медленнее, чем за 5 секунд
работает на 2013 "сама с собой" - ее код почти наверно неприемлем.

Реальность может как-то подправить эту оценку от впятеро вниз (1 сек) до вдвое вверх (10 сек).
Вообще, код показывай, почти наверно там нелепость какая-то...

Сообщение было отредактировано: 13 ноя 20, 14:20
13 ноя 20, 14:23    [22231421]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
booby
Member

Откуда:
Сообщений: 2254
_avz,

разрядность приложения и версии excel соответствуют друг другу?
Если нет - у тебя при передаче данных, вообще говоря возникает трасляция адресов.
Это само по себе может сильно влиять при частых мелких взаимодействиях...
13 ноя 20, 14:29    [22231429]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 26836
_avz
1500 строк, 460 Кб данных, пишет 15 минут.

Если пулять сразу одним махом, то счет пойдет на мс.
13 ноя 20, 15:16    [22231462]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13599
_avz
хотя не всегда возможно (на лист вставляется куча формул)
И формулы так же вставляй.
13 ноя 20, 15:25    [22231470]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
booby
_avz,

разрядность приложения и версии excel соответствуют друг другу?

обе 32
booby

Вообще, код показывай, почти наверно там нелепость какая-то


код, конечно, ленивый и банальный.

  while not датасет.Eof do
  begin
     for  все поля
        лист.Cells.Item[строка, колонка] := датасет.поле[i];
     датасет.Next
  end
  // Вместо того чтоб лист.Range[адрес] := массив


на лист.Range[адрес] := массив я конечно перепишу, где можно.
вопрос в том, почему во столько раз медленней, чем в ранних версиях офиса.
Наш сисадмин подсказал подкрутить настройки Excel, и, надо же, удалось 14 мин ускорить до 13 с половиной. :)

Сообщение было отредактировано: 13 ноя 20, 16:05
13 ноя 20, 16:03    [22231502]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Соколинский Борис
_avz
хотя не всегда возможно (на лист вставляется куча формул)
И формулы так же вставляй.


то есть можно вместо
лист.Range[адрес].FormulaR1C1 := '=SUM(...)'
также писать в массив[i, j] '=SUM()' и это сработает?
ок, попробую.
13 ноя 20, 16:07    [22231504]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13599
_avz

также писать в массив[i, j] '=SUM()' и это сработает?
Так вряд ли.
 лист.Range[адрес].FormulaR1C1 := '=SUM(...)'

"адрес" тут может быть не одной ячейкой.
13 ноя 20, 16:15    [22231514]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Соколинский Борис,

не, у меня идут индивидуальные формулы для ячеек.
13 ноя 20, 16:18    [22231519]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
L_argo
Member

Откуда:
Сообщений: 1297
Насколько помню работа с формулами как-то отличается в разных версиях.
Т.е. может работать или не работать.
Это проблема, когда у конечных пользователей разные версии экселя.
13 ноя 20, 16:22    [22231524]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13599
_avz,
Формулы на лету вставлять вообще не есть хорошо.
Лучше шаблон заготовить.
13 ноя 20, 16:22    [22231525]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31768

13.11.2020 16:03, _avz пишет:
> на лист.Range[адрес] := массив я конечно перепишу, где можно.

ты удивишься на сколько оно тупит БЕЗ массивов.
реально.

Posted via ActualForum NNTP Server 1.5

13 ноя 20, 16:25    [22231531]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Соколинский Борис
_avz,
Формулы на лету вставлять вообще не есть хорошо.
Лучше шаблон заготовить.

Там непонятно, на какой строке будет сумма.
там что такое: '=SUM(R[-236]C;R[-123]C;...R[-1]C)' или =sum(R[-236]C:R[-1]C)
где 236, 123 - вычисляются по ходу дела
13 ноя 20, 16:29    [22231534]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Мимопроходящий

13.11.2020 16:03, _avz пишет:
> на лист.Range[адрес] := массив я конечно перепишу, где можно.

ты удивишься на сколько оно тупит БЕЗ массивов.
реально.


Я знаю.
тут просто такая специфика данных.

блок1
пять строк, промежуточная сумма 1
три строки, промежуточная сумма 2
суммы по блоку1

блок2
... та же хрень
суммы по блоку2

то есть будет много обращений типа лист.Rangе :=массив, а не одно, как хотелось бы.
раз в N меньше, чем сторок, где N < 10
т.е. ускорение в N раз, N < 10

Сообщение было отредактировано: 13 ноя 20, 16:30
13 ноя 20, 16:35    [22231541]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13599
_avz,
Сделай формулы для именованного диапазона, а после выгрузки данных задай его адрес.
Поищи по форуму RefersTo я выкладывал образцы

(глядя на последний пост)
и открой для себя функцию "Промежуточные итоги"

Сообщение было отредактировано: 13 ноя 20, 16:32
13 ноя 20, 16:36    [22231542]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13599
_avz,
Кстати, у тебя именно из-за формул может тормозить. Отключи AutoCalculate перед началом выгрузки и включи по окончанию.
13 ноя 20, 16:40    [22231547]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Соколинский Борис
_avz,
Сделай формулы для именованного диапазона, а после выгрузки данных задай его адрес.
Поищи по форуму RefersTo я выкладывал образцы

(глядя на последний пост)
и открой для себя функцию "Промежуточные итоги"

это да :)
13 ноя 20, 16:46    [22231554]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Соколинский Борис
_avz,
Кстати, у тебя именно из-за формул может тормозить. Отключи AutoCalculate перед началом выгрузки и включи по окончанию.
больше всего тормозит код без формул, признаю. там на самом деле всё разрулится массивами.

Но всё-таки почему между 2013 и 2010 такая разница?

Интересно же.
И мне просто хотелось найти в Excel 2013 "волшебный флажок", чтоб всё было "как раньше" :)

Наш сисадмин пока не нашёл.
13 ноя 20, 16:50    [22231557]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Соколинский Борис
_avz,
Кстати, у тебя именно из-за формул может тормозить. Отключи AutoCalculate перед началом выгрузки и включи по окончанию.
больше всего тормозит код без формул, признаю. Там на самом деле всё разрулится массивами.

Но всё-таки почему между 2013 и 2010 такая разница?

Интересно же. Что там они в MS так испортили, чистое любопытство.
И мне просто хотелось найти в Excel 2013 "волшебный флажок", чтоб всё было "как раньше" :)

Наш сисадмин пока не нашёл.

Сообщение было отредактировано: 13 ноя 20, 16:48
13 ноя 20, 16:52    [22231558]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13599
_avz

Интересно же. Что там они в MS так испортили, чистое любопытство.
По-моему, начиная с 2003 г. порча идет постоянно, с акцентами на разные фронты.
13 ноя 20, 17:02    [22231564]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 646
А что, использовать прямую запись (например XLSReadWriteII), получая в результате скорость записи < 1 сек, уже не в тренде?
13 ноя 20, 17:07    [22231572]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31768

13.11.2020 17:02, Соколинский Борис пишет:
> По-моему, начиная с 2003 г. порча идет постоянно, с акцентами на разные фронты.

"борьба за качество закончена. началась борьба за покупателя"

(С) - CEO Sony

Posted via ActualForum NNTP Server 1.5

13 ноя 20, 17:10    [22231577]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
asutp2
А что, использовать прямую запись (например XLSReadWriteII), получая в результате скорость записи < 1 сек, уже не в тренде?


Каюсь. Пока не осилил, а надо бы.
13 ноя 20, 17:16    [22231580]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31768

дык оно НЕ бесплатное

Posted via ActualForum NNTP Server 1.5

13 ноя 20, 17:25    [22231587]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 646
Мимопроходящий

дык оно НЕ бесплатное
и что? это не делает либу непригодной к использованию.
13 ноя 20, 17:34    [22231599]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 62007
ОФФ

Соколинский Борис> По-моему, начиная с 2003 г. порча идет
Соколинский Борис> постоянно, с акцентами на разные фронты.

Согласен, хотя должен признать, что визуально
(интерфейс, разные кнопочки и функции и пр.)
некоторые улучшения были (не без уродливой
неотключаемой ленты, конечно) - не помню, в
2010-й или 2014-й версии.

Posted via ActualForum NNTP Server 1.5

13 ноя 20, 17:38    [22231600]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
5 штук евро за Enterprise
нормально...
13 ноя 20, 17:39    [22231601]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
s62
Member

Откуда: Жуковский
Сообщений: 1199
_avz
Соколинский Борис
пропущено...
И формулы так же вставляй.


то есть можно вместо
лист.Range[адрес].FormulaR1C1 := '=SUM(...)'
также писать в массив[i, j] '=SUM()' и это сработает?
ок, попробую.

Когда-то Александр Шабля написал хороший FAQ по работе с Excel, вот тут есть про вставку формул в ячейки:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1274#03

Сообщение было отредактировано: 13 ноя 20, 18:03
13 ноя 20, 18:08    [22231621]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
rgreat
Member

Откуда:
Сообщений: 6312
Погуглите TXLSFile.
13 ноя 20, 18:15    [22231627]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13599
Гаджимурадов Рустам

Согласен, хотя должен признать, что визуально (интерфейс, разные кнопочки и функции и пр.)
некоторые улучшения были (не без уродливой неотключаемой ленты, конечно) - не помню, в
2010-й или 2014-й версии.
Главное полезное улучшение было в снятии ограничения на количество строк/столбцов.
Интерфейс с появлением ленты можно вообще не обсуждать, все свистоперделки меркнут по сравнению с общим "куда, нахрен, они засунули полезную кнопку и есть ли она вообще?".
13 ноя 20, 18:46    [22231649]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6656
_avz
5 штук евро за Enterprise
нормально...

у вас скольло разработчиков? Для одного 295 евро (+ НДС 16% до 31.12.2020 для покупателей из Германии, что для загран-покупок не знаю. С 2021 будет опять 19%)

Зато:
1) XLSReadWriteII работает ОЧЕНЬ быстро
2) предсказуемо, ибо не зависит от версии МС Оффиса, он вообще не нужен
3) можно использовать хоть в службе (Service)

XLSReadWriteII
Single licenseEUR 295€


Сообщение было отредактировано: 13 ноя 20, 19:02
13 ноя 20, 19:01    [22231658]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Кроик Семён,

Да уж я понял, что это правильная штука.
не спорю.
13 ноя 20, 19:09    [22231662]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
booby
Member

Откуда:
Сообщений: 2254
_avz
Соколинский Борис
_avz,
Кстати, у тебя именно из-за формул может тормозить. Отключи AutoCalculate перед началом выгрузки и включи по окончанию.
больше всего тормозит код без формул, признаю. там на самом деле всё разрулится массивами.

Но всё-таки почему между 2013 и 2010 такая разница?

Интересно же.
И мне просто хотелось найти в Excel 2013 "волшебный флажок", чтоб всё было "как раньше" :)

Наш сисадмин пока не нашёл.


главных флажка для тебя должно быть два - отключить обновление экрана в excel перед заполнением клеток,
и отключить автопересчет формул при их вставке, с возвратом режима пересчета по завершении автоматизации.

Их не админ, а ты в своем коде должен выставлять.
оба флажка могут критически изменить ситуацию - в сумме на порядок, вероятно.

Я даже не подозреваю, что ты эти флажки не выставляешь.
Это было бы совсем ... хм... неожиданно.
13 ноя 20, 19:30    [22231681]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
booby
_avz
пропущено...
больше всего тормозит код без формул, признаю. там на самом деле всё разрулится массивами.

Но всё-таки почему между 2013 и 2010 такая разница?

Интересно же.
И мне просто хотелось найти в Excel 2013 "волшебный флажок", чтоб всё было "как раньше" :)

Наш сисадмин пока не нашёл.


главных флажка для тебя должно быть два - отключить обновление экрана в excel перед заполнением клеток,
и отключить автопересчет формул при их вставке, с возвратом режима пересчета по завершении автоматизации.

Их не админ, а ты в своем коде должен выставлять.
оба флажка могут критически изменить ситуацию - в сумме на порядок, вероятно.

Я даже не подозреваю, что ты эти флажки не выставляешь.
Это было бы совсем ... хм... неожиданно.



1. Excel и так невидим при работе.
2. даже ScreenUpdating := true в office2010 не даёт таких тормозов, как в 2013
3. Понятно, что если админ найдёт флажок "глазами", я попробую его выставить программно. Пока речь о возможности ускорения в принципе
13 ноя 20, 19:49    [22231690]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
_avz

1. Excel и так невидим при работе.
2. даже ScreenUpdating := true в office2010 не даёт таких тормозов, как в 2013
3. Понятно, что если админ найдёт флажок "глазами", я попробую его выставить программно. Пока речь о возможности ускорения в принципе


В общем, я прогнал вам.
ScreenUpdating[0] := false;

дал ускорение с 14 мин до 48 сек.
:)

что +- приемлемо
13 ноя 20, 20:05    [22231694]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
rgreat
Member

Откуда:
Сообщений: 6312
_avz,

Прикинь что будет, если ты еще и авто перерасчет формул на ходу отключишь? ;)

Сообщение было отредактировано: 13 ноя 20, 20:26
13 ноя 20, 20:31    [22231709]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
rgreat,

да, погорячился я, с вопросом.

:)
13 ноя 20, 20:34    [22231715]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 26836
_avz
5 штук евро за Enterprise
нормально...

Хех, да я буржуй. У меня дома интерпрайс.
Правда, что 2007-й, но хватает за глаза.

_avz
дал ускорение с 14 мин до 48 сек.

Не, это всё равно много.
13 ноя 20, 22:37    [22231766]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
istrebitel
Member

Откуда:
Сообщений: 109
21978703
обратить внимание, что автопересчёт формул выключается после создания книги.

Сообщение было отредактировано: 14 ноя 20, 07:31
14 ноя 20, 07:30    [22231899]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Uridian
Member

Откуда: Lobnya
Сообщений: 226
Вместо этого
  while not датасет.Eof do
     for  все поля

используй
Range.CopyFromRecordset
16 ноя 20, 09:58    [22232633]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 26836
https://www.sql.ru/forum/afsearch.aspx?s=exporttoexcel&submit=?????&bid=20
16 ноя 20, 12:04    [22232750]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Delphi Ответить