Со мной связался клиент, жалуясь на электронные таблицы Excel, которые открывались слишком долго. Они используют Excel для создания счетов, поэтому у них есть сотни электронных таблиц Excel с легким форматированием и очень простыми вычислениями. При сортировке электронных таблиц по размеру я обнаружил, что, хотя большинство электронных таблиц варьировалось от 10 до 250 КБ, было несколько электронных таблиц с размерами файлов 2-3 МБ и более. Как ни странно, размеры файлов были не очень большими, они не содержат большого объема данных, только немного форматирования, может быть, две или три страницы напечатанных счетов, но объем данных был практически идентичен таблицам меньшего размера (и с нормальным открытием). ,
При открытии файла необходимый объем оперативной памяти увеличился бы с 3 МБ до 400 МБ, и при запуске он полностью занимал бы одно ядро (протестировано на двухъядерном компьютере в офисе и моем четырехъядерном ноутбуке). Я думал, что они каким-то образом поймали некоторый код VBA, но там нет макросов, нет кода VBA. Ctrl + End показывает 39 строк и около 12 столбцов (заканчивается в M). Я даже удалил данные, строку за строкой или столбец за столбцом, пока не осталось данных, и это все еще вызывает у меня ту же проблему.
Я просмотрел множество поисковых запросов в Google, но ничего не нашел. Кто-нибудь может предложить какую-нибудь помощь?
источник
Ответы:
Я нашел ответ на мою проблему!
Используя подсказки, данные мне allquixotic, я открыл файлы xlsx в 7-Zip и сравнил размеры файлов. Был один файл, который был намного больше, чем другие. Файл xl \ drawing \ drawing1.xml был файлом, который много раз содержал ссылки на форматы.
Я провел несколько часов, пытаясь выяснить закономерность, но не смог. Ничто, что я мог сделать, не могло заставить это работать! Затем, после обострения, я просто удалил этот чертов файл и попытался открыть его снова в Excel (2010 - не тестировал его в Excel 2007).
Он пожаловался, что файл поврежден, и спросил, не хочу ли я попытаться восстановить. Восстановление файла просто стерло форму, но не изменило формат файла вообще. Я должен был восстановить файл как тот же файл, который был немного странным, но он работал!
Как я уже упоминал ранее, я не тестировал это решение ни для каких продуктов, кроме Excel 2010, поэтому я не знаю, был ли файл формы критичным для Excel 2k7 или любых продуктов OpenOffice. Но, если у вас есть похожая проблема, надеюсь, это может быть полезно.
источник
Используете ли вы двоичный формат .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 есть давняя история, позволяющая их проприетарным форматам пропускать на диск тонны бесполезных данных, которые никогда не очищаются. Это как очень неприятная утечка памяти, которая съедает ваш диск вместо вашей оперативной памяти.
источник
Другое возможное решение будет:
Когда слишком много форматирования, особенно если ко многим отдельным ячейкам применено много разных стилей, Excel действительно пытается применить форматирование при открытии файлов.
Естественно, когда вы удаляете все форматирование, вы получите только текст со стилем по умолчанию, примененным к нему во всех ячейках с пропущенными границами, штриховкой и т. Д. Но так вы можете точно определить причину проблемы.
источник
Для значительного уменьшения размера вы можете попробовать формат .xlsb. Следует уменьшить больше, чем любой другой формат на основе XML, который предоставляет Excel.
Откройте одну из этих таблиц и посмотрите на формат. Ищи что-нибудь обычное. Попробуйте скопировать весь столбец в другую таблицу Excel и вставьте только значения (без какого-либо форматирования). Посмотрите, поможет ли это.
источник
В моем случае проблема была связана с «Формат как таблица». В таблице было 16000 пустых столбцов. Я думаю, это одна из самых частых причин такого рода проблем.
источник
Я посмотрел на все правила условного форматирования, на всю таблицу, и были загружены. Я прошел и очистил их все, а затем создал те, которые мне действительно нужны, и теперь это действительно быстро. Также избавился от всех «соединений», которые мне не нужны, и сохраните их как .xlsb после того, как все заработало, и теперь это стало еще быстрее: o)
источник