Имя: Пароль:
1C
1С v8
Долгое программное заполнение листа Excel в 2010 офисе
0 fisher
 
19.03.14
17:43
Не могу понять, в чем дело. На 2007 - всё нормально.
Под 2010 - в разы медленнее. Включая простую запись значения в ячейку.
Кто сталкивался и как лечил?
1 МихаилМ
 
19.03.14
17:48
в "На"(На 2007) и "Под"(Под 2010)
2 fisher
 
19.03.14
17:57
Вернее, разница больше чем на порядок.
Простая запись значения в ячейку в 2007 занимает меньше 2 мс, в 2010 - 28 мс. Простейшее формирование сраной странички стало занимать минуты вместо секунд.
Куда копать - не представляю.
3 МойКодУныл
 
19.03.14
17:58
Формировать таб документ и его сохранять в excel уже заполненным.
4 fisher
 
19.03.14
18:01
(3) Не вариант. Ты думаешь, я это от нечего делать себе руки выкручиваю? Результирующий док надо формировать на основе екселевского шаблона.
5 fisher
 
19.03.14
18:03
Сначала думал - дело в совместимых форматах. Пересохранил шаблоны в 2010 екселе - без толку.
6 fvadim
 
19.03.14
18:11
а если попробовать перед заполнением екселю сделать EnableEvents = Ложь?
ну и лист не показывать пока идёт заполнение.
7 Jaap Vduul
 
19.03.14
18:19
Может там куча формул пересчитывается?
И в 2007 Calculation = Manual а в 2010 Automatic?
8 fisher
 
19.03.14
18:20
ExcelApp.Calculation = -4135;
ExcelApp.ScreenUpdating = 0;
ExcelApp.EnableEvents = 0;
ExcelApp.Visible = 0;

Всё без толку...
9 Jaap Vduul
 
19.03.14
18:26
Условное форматирование?
10 fisher
 
19.03.14
18:27
Статическое.
Шаблон содержит шапку и шаблоны строк разных видов.
В обработке происходит копирование вставка шаблонов строк и заполнение значений. Всё.
11 fisher
 
19.03.14
18:28
Причем тупняк даже простом заполнении значения ячейки, см. (2)
12 elCust
 
19.03.14
18:31
При работе с масштабными данными в Excel используй COMSafeArray. В разы быстрее.
13 fisher
 
19.03.14
18:34
(12) Слыхал. Но у меня несчастных 5 циферок на строку и до двухсот строк. Производительность вполне устраивала. Не думаю, что смогу получить существенный выигрыш при своей проблеме.
14 fisher
 
19.03.14
18:57
Хм... Похоже, что производительность от количества строк зависит нелинейно. Это наводит на мысли...
15 fisher
 
19.03.14
19:37
Короче, накопительные тормоза появляются при использовании копирования/вставки строк шаблона. Если просто заполнять данные в неоформленные строки - то запись значения в ячейку в среднем идет 4 мс.
Копирование/вставку и так и эдак переписывал. Тормоза не уходят.
Последний вариант:
Sheet.Rows(НомерСтрокиШаблона + ":" + НомерСтрокиШаблона).Copy();
Sheet.Rows(НомерНовойСтроки + ":" + НомерНовойСтроки).Insert(-4121);
Как еще это можно обыграть? У меня фантазия кончилась.
16 МихаилМ
 
19.03.14
19:52
(15)
макрос создать и испольнить
17 fisher
 
20.03.14
11:08
(16) Да это целое дело. Доступ к макросам разрешать... И далеко не факт что полечит.
18 fvadim
 
20.03.14
11:22
(17) способ через ж:
использовать xlsx и работать с xml напрямую, вроде и либы есть.
19 fisher
 
21.03.14
13:39
Установка сервис-паков проблему не решила :(
20 fvadim
 
21.03.14
13:45
в надстройках лишнего не включено?
если антивирь вырубить что-нибудь меняется?
21 fvadim
 
21.03.14
13:50
вот ещё интересное наблюдение
отсюда
http://axforum.info/forums/showthread.php?t=38361
"В итоге покопались в настройках Excel - для листов на которые происходит выгрузка, в случае, если установлен режим просмотра страницы "Разметка страницы" или "Страничный", то выгрузка идет намного медленнее, если же поставить значение "Обычный", то время выгрузки существенно уменьшается."
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой