.XLSB вариант №
Формат файла XLSB определяет формат двоичного файла Excel, который представляет собой набор записей и структур, определяющих содержимое книги Excel. Содержимое может включать неструктурированные или частично структурированные таблицы чисел, текста или и чисел, и текста, формул, подключений к внешним данным, диаграмм и изображений. В отличие от XLSX (который основан на формате файла Open XML), XLSB представляет собой двоичный файл рабочей книги Excel. Файлы XLSB можно читать и записывать быстрее, что делает их полезными для работы с большими файлами. XLSB редко используется для хранения книг, поскольку XLSX (и ранее XLS) были наиболее распространенными форматами файлов, выбранными пользователем для сохранения книг. Его можно открыть в Microsoft Office 2007 и выше.
Спецификации формата файла XLSB
Спецификации формата файла для формата файла XLSB были обнародованы еще в 2008 году как версия 1.0. С тех пор спецификации несколько раз пересматривались, и последняя версия спецификаций (версия 10.0) была опубликована в апреле 2018 года. Спецификации общедоступны Microsoft как [[MS-XLSB] — спецификации формата двоичных файлов Excel](https:/ /msdn.microsoft.com/en-us/library/cc313133(v#office.12).aspx) и всем, кто хочет читать или писать файлы в формате XLSB.
Структура файла XLSB
Файл XLSB — это пакет, состоящий из набора частей. Эти части содержат информацию о содержимом книги, включая данные книги и структуру пакета. Некоторые части содержат информацию, хранящуюся с использованием двоичных записей, некоторые в виде XML, а другие содержат информацию, хранящуюся в виде двоичного потока байтов. Каждая двоичная запись содержит ноль или более структурированных полей, содержащих данные рабочей книги.
Упаковка
Пакет XLSB представляет собой архив ZIP, который должен содержать только одну часть рабочей книги. Эта часть должна быть целью отношения в этой части отношения пакета. Часть рабочей книги является начальной частью документа XLSB.
Часть
Часть — это поток байтов, который имеет связанный тип содержимого, определяющий природу и тип содержимого, хранящегося в части. Некоторые части хранят информацию в двоичном формате, а другие — в формате XML. В разделе перечисление частей документа спецификаций перечислены допустимые части, типы содержимого и обязательные/необязательные отношения между все части в упаковке.
Отношение
Источник и целевой ресурс связаны отношением. Отношения могут быть:
Взаимосвязь пакета: где целью является часть, а источником — пакет в целом.
Взаимосвязь между частями: где цель является частью, а источник — частью в пакете.
Явная связь: когда на ресурс ссылаются из содержимого исходной части, ссылаясь на значение атрибута ID элемента связи.
неявная связь — это связь, которая не является явной.
Внутренние отношения: где цель является частью пакета
Внешняя связь: где целью является внешний ресурс, не входящий в пакет.
Записывать
Запись — это основной строительный блок, используемый для хранения информации о функциях в рабочей книге. Каждая двоичная запись представляет собой последовательность байтов переменной длины. Двоичная запись состоит из трех компонентов:
- тип записи
- рекордный размер и
- данные записи, специфичные для этого типа записи.
Тип записи: Тип записи показывает тип записи, заданный записью. Он также определяет структуру данных записи, специфичных для этой записи. Допустимые типы записей перечислены в разделе Перечисление записей документа спецификаций. Тип записи должен состоять из одного или двух байтов и должен быть больше или равен 128 и меньше 16384.
Размер записи: Размер записи определяет количество байтов, определяющее общий размер данных записи. Это значение ДОЛЖНО быть от одного до четырех байтов. Это значение ДОЛЖНО быть одним байтом, если старший бит младшего байта равен 0; в противном случае это значение ДОЛЖНО быть больше одного байта. Если количество байтов превышает один байт, старший бит в каждом последующем байте указывает, используется ли дополнительный байт. Если старший бит второго байта равен 1, то это значение ДОЛЖНО использовать дополнительный третий байт. Если старший бит третьего байта равен 1, то это значение ДОЛЖНО использовать дополнительный четвертый байт. Старший бит четвертого байта ДОЛЖЕН игнорироваться. Значение состоит из семи младших битов каждого байта вместе взятых. Младшие, наименее значащие биты содержатся в первом байте, и каждый последующий байт содержит биты более высокого порядка, чем предыдущий байт.
Данные записи: Компонент данных записи содержит поля, которые соответствуют определенному типу записи и составляют остальную часть записи. Порядок и структура полей для данного типа записи, перечисленных в перечислении записей, указаны в соответствующем разделе для этого типа записи в записях. Общий размер компонента данных записи ДОЛЖЕН быть равен размеру записи. Поля в компоненте данных записи могут содержать простые значения, массивы значений, структуры из нескольких полей, массивы полей и массивы структур.
Пример записи XLSB
Следующие тип записи и размер записи определяют запись BrtCommentText размером 200 байтов:
11111101 00000100 11001000 00000001 [Поля записи]
Первый байт — 11111101, указывающий низкое значение 125 и то, что тип записи требует второго байта. Второй байт — 00000100, определяющий высокое значение 4 * 128, что равно 512. Значение типа записи — 125 + 512 или 637, что соответствует типу записи BrtCommentText. Следующий байт — 11001000, указывающий на низкое значение 72 и на то, что размер записи требует второго байта. Второй байт — 00000001, указывающий более высокое значение 1 * 128 и то, что размер записи не требует дополнительного байта. Размер записи равен 72 + 128 или 200, что определяет общий размер в байтах компонента данных записи. Поля в компоненте данных записи задаются BrtCommentText.