Когда следует использовать форматы xlsm или xlsb?

106

Так как Excel 2007, Microsoft разделила классический .xlsформат для нескольких форматов (в частности, .xlsx, .xlsm, .xlsb). У меня нет проблем с пониманием использования и назначения .xlsxформата, но мне все еще интересно, следует ли нам использовать формат .xlsmили .xlsbформат при создании файла, содержащего некоторый VBA.

Конечно, вы можете найти несколько тем в Интернете, например:

Из этой последней ссылки я понял, что .xlsmэто какой-то формат XML и, следовательно, необходим для настраиваемой вкладки ленты.

Помимо концептуальной разницы между форматом ( .xlsmоснован на XML VS .xlsb- это двоичный файл), есть ли какое-либо практическое различие при использовании любого из этого файла (кроме настройки ленты)?
Вы когда-нибудь видели реальную разницу при использовании любого из этих форматов?

JMax
источник
3
xlsb обычно меньше xlsm
Чарльз Уильямс
Некоторая полезная информация здесь - analystcave.com/…
Крис
1
По какой-то причине использование .xlsb вместо .xlsm решило некоторые проблемы, которые у нас были с пользовательской функцией, создающей фантомные объекты в объектной модели: superuser.com/questions/1005482/…
SuMau

Ответы:

62

Все они похожи тем, что представляют собой zip-файлы, содержащие фактические файловые компоненты. Вы можете увидеть содержимое, просто заменив расширение на .zip и открыв его. Разница с xlsb, по-видимому, заключается в том, что компоненты не основаны на XML, а находятся в двоичном формате: предположительно это полезно при работе с большими файлами.

https://blogs.msdn.microsoft.com/dmahugh/2006/08/22/new-binary-file-format-for-spreadsheets/

Тим Уильямс
источник
Файлы .xls имели двоичный формат. Файлы .xlsb сохраняют этот двоичный формат для новых офисных версий. Существует разница как в размере, так и в скорости хранения данных в двоичном формате, хотя улучшения будут отмечены только в ОЧЕНЬ больших файлах.
music2myear
90

.xlsxзагружается в 4 раза дольше, .xlsbсохраняет в 2 раза дольше и имеет файл в 1,5 раза больше. Я проверил это на сгенерированном листе с 10'000 строками * 1'000 столбцов = 10'000'000 (10 ^ 7) ячеек простых цепных =…+1формул:

╭──────────────╥────────┬────────╮
│              ║ .xlsx  │ .xlsb  │
╞══════════════╬════════╪════════╡
│ loading time ║ 165s   │  43s   │
├──────────────╫────────┼────────┤
│ saving time  ║ 115s   │  61s   │
├──────────────╫────────┼────────┤
│ file size    ║  91 MB │  65 MB │
╰──────────────╨────────┴────────╯

(Аппаратное обеспечение: Core2Duo 2,3 ГГц, 4 ГБ ОЗУ, 5,400 об / мин SATA II HD; Windows 7, при несколько большой нагрузке из-за других процессов.)

Кроме этого, отличий быть не должно. Точнее,

оба формата поддерживают одинаковый набор функций

приводит этот блог пост от 2006-08-29. Так что, возможно, информация, .xlsbкоторая не поддерживает код ленты, новее, чем верхняя ссылка, но я полагаю, что ваш источник на форуме просто неверен. При взломе двоичного файла он, кажется, в сжатом виде имитирует файловую структуру OOXML 1-к-1: Статья в блоге от 2007-08-07

Аарон Тома
источник
2
только одно испытание, но результатов ministat (1) нет: - \
Good Person
2
Я подтверждаю, что один из моих файлов с настраиваемой лентой отлично работает в xlsb.
David G
5
@PatrickLepelletier .xlsxвроде .xlsm, только с отключенными макросами. Оба основаны на XML. В отличие от этого, .xlsbявляется двоичным. Поэтому вам следует читать вопрос как «{.xlsx / .xlsm} по сравнению с .xlsb». (Нет версии двоичного файла с отключенной макросъемкой .xlsb.)
Аарон Тома
4
Если xlsb лучше, почему xlsx по умолчанию? Должен быть какой-то недостаток у xlsb?
PProteus
3
@PProteus, лучше просто поставить xlsb в определенной области. Сама идея введения стандарта XML заключалась в том, чтобы сделать файлы более прозрачными, сделать файлы более переносимыми и упростить манипуляции с ними. Теперь сторонние инструменты могут правильно читать / записывать файлы Excel (я знаю, они могли сделать это с помощью некоторой обратной инженерии, но это было подвержено ошибкам). С другой стороны, использование больших файлов Excel на самом деле не является основным видом использования Excel, поэтому компромисс для большей переносимости не велик. Кроме того, использование файлов без макросов в некоторой степени повышает безопасность. Для сравнения, зачем возиться с Java, если Assembler лучше?
Истер
9

Можно было подумать, что xlsb имеет только преимущества перед xlsm. Тот факт, что xlsm основан на XML, а xlsb является двоичным, заключается в том, что при повреждении книги у вас больше шансов восстановить xlsm, чем xlsb.

Фелипе Коста Гуальберто
источник
1
Если это правда, то xlsm - то, что мне нужно. Я был проклят с поврежденными файлами Excel с середины 90-х. Этого было почти достаточно, чтобы заставить меня зарабатывать на жизнь копанием канав. Office 2000 был первой версией с функцией восстановления файлов. Но я не
делаю этого
Расширения файлов XLSX и XLSM намного более стабильны, чем расширение файлов Excel XLS до 2007 года.
Фелипе Коста Гуальберто
8

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

1. От Дуга Махью, 22 августа 2006 г .:

... новый двоичный формат XLSB. Как и Open XML, это полнофункциональный формат файла, в котором можно хранить все, что вы можете создать в Excel, но формат XLSB оптимизирован для повышения производительности способами, которые невозможны с чистым форматом XML.

Формат XLSB (также иногда называемый BIFF12, как «формат двоичного файла для Office 12») использует то же соглашение Open Packaging Convention, используемое форматами Open XML и XPS. Так что это, по сути, ZIP-контейнер, и вы можете открыть его любым ZIP-инструментом, чтобы посмотреть, что внутри. Но вместо частей .XML в пакете вы найдете части .BIN ...

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

2. Из архива MSDN от 29 августа 2006 г., который, в свою очередь, цитирует уже отсутствующую запись в блоге, касающуюся формата XLSB:

Несмотря на то, что мы проделали большую работу, чтобы наши XML-форматы открывались быстро и эффективно, этот двоичный формат по-прежнему более эффективен для открытия и сохранения в Excel и может привести к некоторым улучшениям производительности для книг, содержащих много data, или это потребует большого количества синтаксического анализа XML во время процесса Open. (Фактически, мы обнаружили, что новый двоичный формат во многих случаях быстрее, чем старый формат XLS.) Кроме того, не существует версии этого формата файла без макросов - все файлы XLSB могут содержать макросы (VBA и XLM). . Во всех других отношениях он функционально эквивалентен формату файла XML, приведенному выше:

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

UuDdLrLrSs
источник
5

Формат XLSB также предназначен для макросов, встроенных в скрытый файл книги, расположенный в папке автозагрузки Excel (XLSTART).

Быстрый и грязный тест с xlsm или xlsb в папке XLSTART:

Measure-Command { $x = New-Object -com Excel.Application ;$x.Visible = $True ; $x.Quit() }

0,89 с с xlsb (двоичным) против 1,3 с тем же содержимым в формате xlsm (xml в zip-файле) ... :)

Алексис-Эммануэль Херингер
источник