11

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

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

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

6 ответов6

5

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

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

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

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

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

4

Используете ли вы двоичный формат .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 есть давняя история, позволяющая их проприетарным форматам пропускать на диск тонны бесполезных данных, которые никогда не очищаются. Это как очень неприятная утечка памяти, которая съедает ваш диск вместо вашей оперативной памяти.

1

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

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

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

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

0

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

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

0

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

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .