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

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

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

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

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

Ответ 1

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

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

Ответ 2

.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: статья в блоге от 2006-08-07

Ответ 3

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

Ответ 4

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

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

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

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

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

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

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

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

Ответ 5

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

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

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

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