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

Yufil
- Игорь Столяров
- Ветеран движения
- Сообщения: 8070
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 97 раз
Игорь Столяров
-
- Посетитель
- Сообщения: 49
- Зарегистрирован: 30 Декабрь 2005, 0:06
Ну собственно рекомендаций несколько:
Как советовали ранее
1. Скрыть Ole (для исключения перерисовки)
2. Отключить вычисления формул (для исключения постоянного перерасчета)
Кроме того можно:
3. Заполнять с последней строки (для исключения постоянного запроса в систему на выделение памяти)
4. Использовать бланки (чтобы не выполнять лишние операции в виде выравнивания, границы и т.д.)
5. Если отчет простой (таблица), то использовать класс Олега Руденко.
6. Ну и как советовал Юрий, если не получится, то использовать Formula One. Загружается быстрее, ну и вообщем-то другие свои преимущества, как и недостатки.
Как советовали ранее
1. Скрыть Ole (для исключения перерисовки)
2. Отключить вычисления формул (для исключения постоянного перерасчета)
Кроме того можно:
3. Заполнять с последней строки (для исключения постоянного запроса в систему на выделение памяти)
4. Использовать бланки (чтобы не выполнять лишние операции в виде выравнивания, границы и т.д.)
5. Если отчет простой (таблица), то использовать класс Олега Руденко.
6. Ну и как советовал Юрий, если не получится, то использовать Formula One. Загружается быстрее, ну и вообщем-то другие свои преимущества, как и недостатки.
Igor Vesnin
- Игорь Столяров
- Ветеран движения
- Сообщения: 8070
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 97 раз
Игорь Столяров
Yufil
Ravenous
MIXA-20
Вернуться в «CLARION for Windows»
Перейти
- CW
- ↳ CLARION for Windows
- ↳ CLARION for Internet
- ↳ Clarion.NET
- Эксклюзив
- ↳ Приват
- CLARION и...
- ↳ Reports
- ↳ Железо
- ↳ Готовые программы, шаблоны, библиотеки...
- ↳ cJSON
- ↳ LibCurl
- ↳ MAV
- ↳ SQL, Oracle, ...
- ↳ Multi-программирование(Pascal/Delphi, и т.д.)
- ↳ WinDev
- DOS
- ↳ CLARION for DOS
- Разное
- ↳ Новости
- ↳ English
- ↳ Ресурсы
- ↳ Работа
- ↳ Обо всем ...
- ↳ Обсуждение этого Форума (типа, Гостевая книга)