Назад | Перейти на главную страницу

Файл Excel становится огромным (> 150 МБ)

Есть один конкретный файл Excel, которым пользуются несколько сотрудников моей компании. Он редактируется как в Excel 2003, так и в 2007, с включенной функцией «Совместное использование», что позволяет нескольким авторам одновременно.

Файл содержит приличный объем данных на нескольких листах с некоторым базовым форматированием, и раньше его размер составлял около 6 МБ, что кажется разумным для его содержимого. Но после нескольких недель редактирования файл увеличился до 10, затем до 20 МБ и в конечном итоге резко увеличился до более чем 150 МБ, хотя в нем все еще содержится примерно такой же объем данных, как и раньше. Теперь требуется 5-10 минут, чтобы его открыть, и столько же времени, чтобы его сохранить.

В первый раз, когда это произошло, я скопировал содержимое каждого листа в новую пустую книгу и сохранил новую книгу; это вернуло его примерно к 6 МБ. Теперь он снова взорвался.

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

В качестве шага по устранению неполадок я попытался сохранить файл в формате «XML Spreadsheet 2003», надеясь получить некоторое представление о том, что хранится. Конечно, файл был почти гигабайтом, и почти все 10 миллионов строк выглядят так:

<NamedCell ss:Name="Z_21D5114F_E50C_46AC_AA4F_C3FF540C717F_.wvu.FilterData"/>
<NamedCell ss:Name="Z_1EE2BA5E_3011_4F9A_8ACD_E58835250FC4_.wvu.FilterData"/>
<NamedCell ss:Name="Z_1E3BDCEA_6A72_4ECC_BF4F_7B03CC66181E_.wvu.FilterData"/>

Я видел в Интернете несколько сценариев VBScripts для управления и перечисления именованных ячеек, которые скрыты во встроенном интерфейсе Excel, хотя мне интересно, как они будут обрабатывать мои 10 миллионов названных ячеек. Но что мне действительно нужно, так это понять, почему это продолжается. Какие действия в Excel могут вызывать это?

ОБНОВИТЬ:

Вот эксперимент, который я попробовал, он дает более подробную информацию:

Так что, похоже, это проблема '03, и при сохранении файла в формате '03 сразу же была воссоздана куча мусора, которого явно не было в файле '07.

Скажите вместе со мной: Excel - это не база данных.

Вы сталкиваетесь с конструктивными ограничениями программного обеспечения: у него не так много возможностей для хранения транзакционных данных, поэтому, когда несколько человек пишут в него, ему приходится хранить множество информации для согласования. В нем так много данных, что транзакционные копии ОГРОМНЫ.

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

Если вы собираетесь так работать, вам следует хотя бы собрать небольшую базу данных Access. Это избавит вас от головной боли, потому что он предназначен для такой работы, а Excel - нет.

@Josh: Да, это абсолютно утечка. Когда вы делитесь документом, он должен отслеживать изменения, сделанные каждым пользователем ... Я назову это «транзакционными данными», но вы можете просто думать об этом как об истории. Поскольку "официальной" версии никогда не бывает, она отслеживает изменения, и документ раздувается быстрее, чем Кирсти Элли в магазине пончиков.

Это по замыслу. Кто-то, кто является гуру Excel, может рассказать вам, как это остановить, но лучшее решение - просто не использовать Excel для данных, которые постоянно поддерживаются. Это не совсем то, для чего он предназначен.

Я с пониманием отношусь к вашей проблеме, но это лучшее решение - объяснить проблему начальству и разработать новую процедуру, чем пытаться продлить неудачный взлом.

@Josh: Если вы просто хотите временно сжать его, скопируйте все данные и вставьте их в новую таблицу. ЭТО уничтожит все метаданные, гарантированно (убедитесь, что вы не выбрали весь лист, а только ту часть, в которой есть данные). Но это в лучшем случае временное решение.

Похоже, вы столкнулись с проблемой пользовательских представлений. Видеть:

Как мне удалить материал _ # wvu # FilterData?
http://www.tech-archive.net/Archive/Excel/microsoft.public.excel/2006-12/msg00704.html

Как отключить пользовательские просмотры? (прокрутка)
http://www.eggheadcafe.com/software/aspnet/30197438/how-do-i-disable-custom-v.aspx

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

Вы также можете посмотреть, как выполнить «Сохранить как ...» в меню «Файл».

Excel вместе с Word и другими членами Office сохраняет историю отмен в файле для ДЛИННЫЙ время.

Итак, сделайте «Сохранить как ...», выберите новое имя файла, затем сравните два файла по размеру. Если новый уменьшился так, как я ожидал, переместите его обратно на старый и продолжайте свой веселый путь.

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

Дополнительная информация:
Любые вычисления, все форматирование и любые другие виды «заставить его сделать это _____» увеличивают накладные расходы на хранение. Лист размером 1 МБ быстро вырастет до 100 МБ, если с книгой связано несколько подобных вещей.

http://answers.microsoft.com/en-us/office/forum/office_2007-excel/why-do-my-excel-files-become-huge/8235dc08-aa70-4a65-9892-b776790d79c5

Попробуй это

  1. Найдите последнюю заполненную строку данных и щелкните любую ячейку в одной строке под ней.
  2. Выберите из этой строки до конца и удалите все строки
  3. Сделайте то же самое для столбцов
  4. Сохраните и закройте файл
  5. Закройте MS Excel
  6. Откройте файл заново

Решает ли это проблему?