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

92 JMax [2011-10-19 15:55:00]

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

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

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

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

excel excel-2007 xlsm xlsb


6 ответов


57 Решение Tim Williams [2011-10-19 18:03:00]

Все они похожи, поскольку они представляют собой файлы zip, содержащие фактические компоненты файлов. Вы можете увидеть содержимое, просто заменив расширение на .zip и открыв их. Разница с xlsb заключается в том, что компоненты не основаны на XML, а находятся в двоичном формате: возможно, это полезно при работе с большими файлами. http://blogs.msdn.com/b/dmahugh/archive/2006/08/22/712835.aspx


78 Aaron Thoma [2012-03-10 04:13:00]

.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


6 Felipe Costa Gualberto [2015-11-29 19:40:00]

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


4 Alexis-Emmanuel Haeringer [2015-01-26 20:31:00]

Формат 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 файле)...:)


4 DaveInCaz [2017-04-03 21:32:00]

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

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


0 SuMau [2017-06-02 13:30:00]

По какой-то причине использование .xlsb над .xlsm решило некоторые проблемы, которые мы имели с пользовательской функцией, создающей объекты phantom в объектной модели: https://superuser.com/questions/1005482/excel-creates-non-existent-worksheets-in-vba-project-explorer/1215336#1215336