PDA

Показать полную графическую версию : Excel подвисает при прокрутке структуры (7 уровней, 30к строк)


gannet
07-06-2018, 06:47
Здравствуйте! Возникла проблема с выгрузкой из 1С: формируют отчет по остаткам, выгружают в excel - там редактируют, делают пометки и прочее. Проблема в том, что excel при работе с таким файлом жутко тормозит - если структура свернута до 2-3 уровня (основные для работы), то любая операция, будь то вертикальная или горизонтальная прокрутка, перемещение между ячейками после нее или, не дай бог, сворачивание\разворачивание уровней приводят к нагрузке процессора и зависанию программы от нескольких секунд до нескольких минут. Да даже изменение размеров окна, а порой и просто переход к нему приводят к подвисанию на несколько минут, если свернуто до 2 уровня. Ненамного помогает перенос работы на сервер терминалов, но там у процессора частота не особо высока, а ядер нагружается 4-6. Другие ресурсы компьютера, включая видеокарту, не нагружаются.
К тому же в LibreOffice работа с файлом не вызывает каких-либо проблем.
При этом сам файл простой, как клубок нити - ни формул, ни объектов, ни итогов, ни специального форматирования - просто голые данные одного шрифта с двумя цветами текста и фона, ну ячейки разве только объединены. Да и количество строк не запредельное.
Единственный усложняющий таблицу элемент - структура. Может, кто-нибудь знает способ заставить excel корректно работать с этим базовым элементом? Потому что различные ключи запуска, опции, версии excel и типы файлов уже испробовали, а результат нулевой:(
Файл во вложении (http://forum.oszone.net/attachment.php?attachmentid=152874&stc=1&d=1528343043)

a_axe
07-06-2018, 13:03
Может, кто-нибудь знает способ заставить excel корректно работать с этим базовым элементом? »
У меня не получилось (офис 2013, 64bit, лицензия, обновлен). Сначала ворочается достаточно бодро, проблема только при отображении/скрытии уровня (15-20 секунд), но при некоторых комбинациях уровней также зависает около минуты.
Пересохранение в xlsb дало уменьшение размера файла, но не ускорение.
Отключение аппаратного ускорения также ничего не дало.
Этот вопрос всплывает в поиске, полагаю эти решения вы уже пробовали (мне также не помогло):
answers.microsoft.com Excel 2013 - тормозит при работе Проблема - при открытии маленьких файлов (15-100кб), сохранненных из 1с, Ексель занимает примерно 50% ЦП. (https://answers.microsoft.com/ru-ru/msoffice/forum/msoffice_excel-mso_winother-mso_2013_release/excel-2013/fbedf00c-2bec-450a-b0a0-c023b4d532d4)
answers.microsoft.com - Excel 2016 тормозит при работе с ячейками при работе с файлами, которые были выгружены/созданы 1С и подобных (ERP) (https://answers.microsoft.com/ru-ru/office/forum/office_2016-excel/excel-2016/7dce3794-80fa-46fd-8fef-99d8ca9625c8?auth=1)
Ярлычок листа у вас один - для 2016 версии предлагается сдвинуть бегунок прокрутки, чтобы были видны все ярлычки, все ссылаются на один и тот же макрос
Sub Macrosy_tyanut_trosy()
ActiveWindow.TabRatio = 0.7
End Sub

gannet
07-06-2018, 17:35
a_axe, спасибо, макрос улыбнул))
Аппаратное ускорение, видеодрайвера - это, конечно, не то, ибо нагрузка и подвисание зависят только от того, какое количество ячеек (даже не рядов или столбцов, а именно ячеек - причем зависимость если и не прямая, то как минимум весьма похожая) скрыто, а не от того, сколько реально нужно вывести на экран. Хотя данное направление я тоже проверял, пробовал даже уменьшать dpi. Убирал также полосу прокрутки - вспомнил историю о том, как в какой-то программе (будто бы даже в Excel) были тормоза из-за того, что ползунок полосы прокрутки был адаптивной длины и значительные ресурсы процессора тратились именно на вычисление его длины и отображаемой подсказки о текущей строке (в LibreOffice, кстати, ползунок, похоже, именно такой - его длина меняется в зависимости от отображаемого на текущем экране развернутого уровня структуры). Но и полоса прокрутки ни при чем, ведь обработка расширения окна не вызывала бы никаких затруднений.
Здесь, похоже, какой-то баг, заставляющий обрабатывать перед выводом не элемент структуры, а каждую ячейку, хотя чего там обрабатывать, кроме свойства скрыто/нет, а затем уж пытаться вывести...

P.S. Может быть 1С создает неправильную структуру - ручную, где каждый уровень структуры это структура из нижних уровней и часть высших, а при автоматической структуре это не так, поэтому Майкрософт и не чешутся, ведь никто в здравом уме не будет создавать вручную столько структур из структур из структур:)? А автоматическая структура невозможна из-за отсутствия формул.
Эх, хоть удаляй группировки и садись писать макрос для группировки по количеству табов в первом столбце - все равно ведь будет как ручная??




© OSzone.net 2001-2012