Ускорение работы с Excel через OLE?
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ускорение работы с Excel через OLE?
Как бы ускорить работу с OLE?
На мой взгляд все работает очень медленно.
(Копирую блок ячеек, затем заполняю ячейки по координатам значениями)
Использую C5.5 и ExcelClass (abxl)
На мой взгляд все работает очень медленно.
(Копирую блок ячеек, затем заполняю ячейки по координатам значениями)
Использую C5.5 и ExcelClass (abxl)
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Ну, попробуй тогда обычные методы:
1. Переход на более новую версию (Ex2003 незначительно, но быстрей чем XP);
2. Отключи сразу, перед записью листа, расчет формул на нем.
?ExcelObj{'Application.Calculation'} = -4135
Но конечно наиболее эффективно использовать Excel - как средство отображения готового отчета, т.е. формировать отчет в памяти программы и выводить готовый лист по строкам (см. выше), а не формировать его прорисовкой произвольных ячеек.
Посмотрел - отчет в 8 тыс. строк * 10 колонок выводится за 30 сек.
Ускорять далее - не пробовал ...
1. Переход на более новую версию (Ex2003 незначительно, но быстрей чем XP);
2. Отключи сразу, перед записью листа, расчет формул на нем.
?ExcelObj{'Application.Calculation'} = -4135
Но конечно наиболее эффективно использовать Excel - как средство отображения готового отчета, т.е. формировать отчет в памяти программы и выводить готовый лист по строкам (см. выше), а не формировать его прорисовкой произвольных ячеек.
Посмотрел - отчет в 8 тыс. строк * 10 колонок выводится за 30 сек.
Ускорять далее - не пробовал ...
За теми кто отстал - не возвращаться. (С) Кодекс
Попробуй просто скрыть OLE перед заполнением, тогда нет соблазна перерисовывать картинку после каждой строчки. Был у меня такой эпизод, как говорят буржуи "dramatically increased" ... А после заполнения можно и открыть.Игорь Столяров писал(а):Ну, попробуй тогда обычные методы:
1. Переход на более новую версию (Ex2003 незначительно, но быстрей чем XP);
2. Отключи сразу, перед записью листа, расчет формул на нем.
?ExcelObj{'Application.Calculation'} = -4135
Но конечно наиболее эффективно использовать Excel - как средство отображения готового отчета, т.е. формировать отчет в памяти программы и выводить готовый лист по строкам (см. выше), а не формировать его прорисовкой произвольных ячеек.
Посмотрел - отчет в 8 тыс. строк * 10 колонок выводится за 30 сек.
Ускорять далее - не пробовал ...
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Нет, именно это... Значит, не судьба. Пользуйся Formula One... Кстати, в Офис входят так называемые Web-компоненты - OCX, работающие с таблицами. Хоть бы кто поковырялсяAnDS писал(а):Ну, у меня OLE скрыт (hide).
И Excel скрыт (visible только после завершения создания отчета делаю).
Или что-то другое имеется ввиду?
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
-
- Посетитель
- Сообщения: 49
- Зарегистрирован: 30 Декабрь 2005, 0:06
Ну собственно рекомендаций несколько:
Как советовали ранее
1. Скрыть Ole (для исключения перерисовки)
2. Отключить вычисления формул (для исключения постоянного перерасчета)
Кроме того можно:
3. Заполнять с последней строки (для исключения постоянного запроса в систему на выделение памяти)
4. Использовать бланки (чтобы не выполнять лишние операции в виде выравнивания, границы и т.д.)
5. Если отчет простой (таблица), то использовать класс Олега Руденко.
6. Ну и как советовал Юрий, если не получится, то использовать Formula One. Загружается быстрее, ну и вообщем-то другие свои преимущества, как и недостатки.
Как советовали ранее
1. Скрыть Ole (для исключения перерисовки)
2. Отключить вычисления формул (для исключения постоянного перерасчета)
Кроме того можно:
3. Заполнять с последней строки (для исключения постоянного запроса в систему на выделение памяти)
4. Использовать бланки (чтобы не выполнять лишние операции в виде выравнивания, границы и т.д.)
5. Если отчет простой (таблица), то использовать класс Олега Руденко.
6. Ну и как советовал Юрий, если не получится, то использовать Formula One. Загружается быстрее, ну и вообщем-то другие свои преимущества, как и недостатки.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз