30.05.2011, 19:36 | #1 |
Участник
|
Очень медленно происходит выгрузка отчетов в Excel
При выгрузке отчетов в Excel (например стандартный ИНВ-3) выгрузка происходит очень медленно - 80 строк выгружаются 3-5 минут, 4000 строк - несколько часов.
И так в принципе со всеми отчетами, которые используют ComExcelDocument_RU. Из трассировки видно что подвисания начинаются на строке comRange = comApplication.range(bookMark); в методе findRange. MS Office стоит 2010 Standard, пробовал ставить 2007 - не помогло. Версия аксапты 2009 SP1 RollUp 2. Может кто сталкивался с таким или хотя бы есть идеи, как побороть? Буду очень признателен. |
|
30.05.2011, 19:59 | #2 |
Участник
|
Есть альтернативные способы работы с Excel:
1. В шаблон отчета поместить макрос, который будет грузить данные из текстового файла и "ложить" по ячейкам - работает раз в 50 быстрее ComExcelDocument_RU. 2. Работать с excel через ADO - еще быстрее чем вариант 1 |
|
30.05.2011, 20:57 | #3 |
Участник
|
В принципе, сейчас в некоторых случаях используем как раз вариант 1. Но переделывать все старые отчеты под такую схему - не айс. Ввиду того, что когда-то это все работало нормально, возникает вопрос, что же все-таки могло измениться (когда-то - это в других конторах, в которых использовался тот же функционал. При этом железо в целом похожее).
|
|
30.05.2011, 21:50 | #4 |
Участник
|
Цитата:
Сообщение от Leopold Stotch
В принципе, сейчас в некоторых случаях используем как раз вариант 1. Но переделывать все старые отчеты под такую схему - не айс. Ввиду того, что когда-то это все работало нормально, возникает вопрос, что же все-таки могло измениться (когда-то - это в других конторах, в которых использовался тот же функционал. При этом железо в целом похожее).
|
|
31.05.2011, 03:29 | #5 |
Участник
|
Используем Ax4 sp2, вывод отчета происходит путем формирования большой текстовой строки на все строки-столбцы отчета + копирование через буфер. Сами отчеты были оптимизированы, основное время уходило на отработку запроса к БД и проверку всяких условий.
Поставили несколько машин с Win7 + Office 2010 у клиента - некоторые из них стали работать раз в 5-6 медленнее, чем связка Win XP + Office 2007/2003 при формировании отчетов. Причем путем замера времени вызовов в ComExcelDocument_RU было выяснено, что все (!) обращения к объекту Excel выполняются раз в 5-10 медленнее Причина так и не была найдена... Причем на некоторых машинах работает "по-старому" быстро |
|
31.05.2011, 10:43 | #6 |
Участник
|
|
|
31.05.2011, 11:26 | #7 |
Участник
|
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
31.05.2011, 12:46 | #8 |
Участник
|
Поячеечное заполнение (в смысле, отдельной командой заполнять каждую ячейку) всегда будет работать относительно медленно. Общая стратегия ускорения вывода - это команды групповой вставки значений. Заполнение многих ячеек одной командой. В идеале, заполнение сразу всех ячеек одной командой. Как правило, это реализуется одним из следующих способов
1. Буфер обмена 2. RecordSet 3. Выгрузка в промежуточные файлы 4. Запрос из макроса Excel напрямую к внешним данным Если же у Вас "работало быстро", а потом вдруг стало "работать медленно" при этом сам код не менялся и объем выгружаемых данных остался примерно тем же, то надо смотреть настройки Excel, а также настройки операционной системы. Может, антивирус криво настроен. Может с правами доступа что-то намудрили. И еще, надеюсь, Вы используете предварительно сформированные шаблоны Excel. Т.е. файлы XLT. Создание отчетов "с нуля" или использование в качестве шаблонов обычных файлов XLS, также существенно замедляет формирование отчетов. |
|
|
За это сообщение автора поблагодарили: Leopold Stotch (1). |
31.05.2011, 13:47 | #9 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
Если же у Вас "работало быстро", а потом вдруг стало "работать медленно" при этом сам код не менялся и объем выгружаемых данных остался примерно тем же, то надо смотреть настройки Excel, а также настройки операционной системы. Может, антивирус криво настроен. Может с правами доступа что-то намудрили.
И еще, надеюсь, Вы используете предварительно сформированные шаблоны Excel. Т.е. файлы XLT. Создание отчетов "с нуля" или использование в качестве шаблонов обычных файлов XLS, также существенно замедляет формирование отчетов. В итоге покопались в настройках Excel - для листов на которые происходит выгрузка, в случае, если установлен режим просмотра страницы "Разметка страницы" или "Страничный", то выгрузка идет намного медленнее, если же поставить значение "Обычный", то время выгрузки существенно уменьшается. |
|
|
За это сообщение автора поблагодарили: coolibin (1). |
Теги |
excel, export |
|
|