Диагностика медленных таблиц Excel?

12

Со мной связался клиент, жалуясь на электронные таблицы Excel, которые открывались слишком долго. Они используют Excel для создания счетов, поэтому у них есть сотни электронных таблиц Excel с легким форматированием и очень простыми вычислениями. При сортировке электронных таблиц по размеру я обнаружил, что, хотя большинство электронных таблиц варьировалось от 10 до 250 КБ, было несколько электронных таблиц с размерами файлов 2-3 МБ и более. Как ни странно, размеры файлов были не очень большими, они не содержат большого объема данных, только немного форматирования, может быть, две или три страницы напечатанных счетов, но объем данных был практически идентичен таблицам меньшего размера (и с нормальным открытием). ,

При открытии файла необходимый объем оперативной памяти увеличился бы с 3 МБ до 400 МБ, и при запуске он полностью занимал бы одно ядро ​​(протестировано на двухъядерном компьютере в офисе и моем четырехъядерном ноутбуке). Я думал, что они каким-то образом поймали некоторый код VBA, но там нет макросов, нет кода VBA. Ctrl + End показывает 39 строк и около 12 столбцов (заканчивается в M). Я даже удалил данные, строку за строкой или столбец за столбцом, пока не осталось данных, и это все еще вызывает у меня ту же проблему.

Я просмотрел множество поисковых запросов в Google, но ничего не нашел. Кто-нибудь может предложить какую-нибудь помощь?

Саймон Хова
источник
Еще одно интересное замечание: я не могу сохранить файл xlsx как файл xls в Excel 2007, но, импортировав его в Google Docs, а затем сохранив его как файл xls, я снова получаю файл обычного размера.
Саймон Хова,

Ответы:

6

Я нашел ответ на мою проблему!

Используя подсказки, данные мне allquixotic, я открыл файлы xlsx в 7-Zip и сравнил размеры файлов. Был один файл, который был намного больше, чем другие. Файл xl \ drawing \ drawing1.xml был файлом, который много раз содержал ссылки на форматы.

Я провел несколько часов, пытаясь выяснить закономерность, но не смог. Ничто, что я мог сделать, не могло заставить это работать! Затем, после обострения, я просто удалил этот чертов файл и попытался открыть его снова в Excel (2010 - не тестировал его в Excel 2007).

Он пожаловался, что файл поврежден, и спросил, не хочу ли я попытаться восстановить. Восстановление файла просто стерло форму, но не изменило формат файла вообще. Я должен был восстановить файл как тот же файл, который был немного странным, но он работал!

Как я уже упоминал ранее, я не тестировал это решение ни для каких продуктов, кроме Excel 2010, поэтому я не знаю, был ли файл формы критичным для Excel 2k7 или любых продуктов OpenOffice. Но, если у вас есть похожая проблема, надеюсь, это может быть полезно.

Саймон Хова
источник
Я столкнулся с файлом с той же проблемой. Вместо удаления Drawing1.xml я удалил ссылку на чертеж из sheet1.xml и сделал «сохранить как». Возможной причиной может быть копирование данных или отформатированных строк из почты, Интернета или других электронных таблиц.
Андрей
1
Столкнулся с похожей ситуацией. В моем случае есть несколько drawN.xml, размером от «приемлемых» 200 КБ до 80 МБ. Этот файл ставит даже четырехъядерный рабочий стол с 16 ГБ оперативной памяти на колени. Удаление всего файла drawingN.xml (поскольку файл Excel даже не содержит диаграмм / графиков) решит проблему, работает на последней версии Office 365 на момент написания этой статьи.
Мартин Кахья Пауло
5

Используете ли вы двоичный формат .xls или новый основанный на XML формат .xlsx? В целом формат .xlsx приводит к значительному уменьшению размера файлов.

Проверьте наличие таких вещей, как чрезмерное количество стилей, хранящихся в документе.

Попробуйте «удалить личную информацию» (особенность Excel / Word / и т. Д.), Чтобы очистить некоторые виды ошибок, которые могут находиться в файле.

Если электронная таблица является или ранее была опубликована, в ней могут храниться старые общие данные.

Одно простое решение - скопировать и вставить только соответствующие данные из этой электронной таблицы в новую, затем сохранить ее в формате .xlsx и посмотреть, насколько она мала. Если он очень маленький, то у вас есть ответ - Excel плохо учитывает структуры данных своего внутреннего формата файлов.

Также проверьте наличие сложных или циклических формул и ссылок на внешние листы (особенно те, что на сетевых дисках). Если вы думаете, что формула может быть медленной, вы можете пройти через нее с помощью инструмента аудита формул.

И последнее: если вы сохраните его в формате .xlsx, и он все еще большой, попробуйте загрузить инструмент повышения производительности OpenXML SDK: http://www.microsoft.com/en-us/download/details.aspx?id=5124

В этом откройте .xlsx и просто посмотрите на все элементы в файле и посмотрите, не является ли что-то посторонним. Для этого может потребоваться знание XML и конкретных схем OpenXML, но это верный способ выяснить, что является причиной раздувания.

PS - если вас это раздражает, прекратите использовать форматы / программы Microsoft или предложите вашему клиенту сделать это. Если вы поищите в Google «раздувание базы данных Microsoft Access», вы увидите, что у Microsoft есть давняя история, позволяющая их проприетарным форматам пропускать на диск тонны бесполезных данных, которые никогда не очищаются. Это как очень неприятная утечка памяти, которая съедает ваш диск вместо вашей оперативной памяти.

allquixotic
источник
Электронная таблица - это действительно xlsx, и одна странная вещь: я не могу сохранить ее как файл .xls. Он продолжает возвращать ошибку в Excel 2k7. Я сохранил копию в виде электронной таблицы 2003 xml, и странная вещь, которую я обнаружил, заключалась в том, что в ней было огромное количество стилей . Это странно, потому что вся электронная таблица использует один и тот же шрифт и не требует специального форматирования. До сих пор не знаю, что сказать моему клиенту.
Саймон Хова,
1

Другое возможное решение будет:

  1. Создайте копию проблемного файла Excel
  2. Откройте эту копию
  3. Нажмите CTRL + A, а затем нажмите «Очистить» -> «Очистить форматы»
  4. Повторите шаг 3 на каждом листе
  5. Сохраните файл и попробуйте снова открыть его

Когда слишком много форматирования, особенно если ко многим отдельным ячейкам применено много разных стилей, Excel действительно пытается применить форматирование при открытии файлов.

Естественно, когда вы удаляете все форматирование, вы получите только текст со стилем по умолчанию, примененным к нему во всех ячейках с пропущенными границами, штриховкой и т. Д. Но так вы можете точно определить причину проблемы.

РУСИ
источник
0

Для значительного уменьшения размера вы можете попробовать формат .xlsb. Следует уменьшить больше, чем любой другой формат на основе XML, который предоставляет Excel.

Откройте одну из этих таблиц и посмотрите на формат. Ищи что-нибудь обычное. Попробуйте скопировать весь столбец в другую таблицу Excel и вставьте только значения (без какого-либо форматирования). Посмотрите, поможет ли это.

TwirlMandarin
источник
Я попытался сохранить в xlsb. Нет уменьшения в размере вообще. Снимок экрана .
Саймон Хова,
@Simon Hova Вы пытались установить расчет вручную и перезапустить Excel? Это может быть что угодно: формулы, форматирование. Скопировали ли вы столбец данных в другую электронную таблицу Excel, чтобы увидеть, одинакова ли производительность? Просто данные; нет формулы или форматирования. Добавьте их по одному и посмотрите, в чем проблема.
TwirlMandarin
Это еще одна странная вещь, там нет никаких расчетов, нет никаких формул запускаемых. Это всего лишь несколько строк и столбцов с небольшим форматированием. Я попытался удалить данные построчно, и у меня остался файл примерно того же размера, что и раньше. Все еще в тупик.
Саймон Хова,
0

В моем случае проблема была связана с «Формат как таблица». В таблице было 16000 пустых столбцов. Я думаю, это одна из самых частых причин такого рода проблем.

Revious
источник
0

Я посмотрел на все правила условного форматирования, на всю таблицу, и были загружены. Я прошел и очистил их все, а затем создал те, которые мне действительно нужны, и теперь это действительно быстро. Также избавился от всех «соединений», которые мне не нужны, и сохраните их как .xlsb после того, как все заработало, и теперь это стало еще быстрее: o)

Павел
источник
Это дублирует информацию в других ответах и ​​выглядит как комментарий «спасибо».
bertieb