Общие сведения о двоичном формате файлов Excel MS-XLS (машинный перевод)
Важно!
Данная статья переведена с помощью машинного перевода, см. Отказ от ответственности. Используйте английский вариант этой статьи, который находится здесь, в качестве справочного материала.
Аннотация. Рассматривается двоичный формат файлов MS-XLS, который используется в ранее выпущенных продуктах Microsoft Excel. В статью включены сведения об основных структурах и ключевые концепции для программного взаимодействия с данным форматом файлов.
Дата последнего изменения: 23 июня 2011 г.
Применимо к: Excel | Excel 2010 | Office 2007 | Office 2010 | SharePoint Server 2010 | VBA
В этой статье
Общие сведения о двоичном формате файла MS XLS
Заключение
Дополнительные ресурсы
**Относится к:**Microsoft Office Excel 2003 | Microsoft Excel 2002 г. | Microsoft Excel 2000 | Microsoft Excel 97
Публикации: Февраль 2011 | По: Корпорация Майкрософт
Содержание
Общие сведения о двоичном формате файла MS XLS
Основные компоненты формата MS XLS
Извлечение данных из файлов Excel
Заключение
Дополнительные ресурсы
В данной статье описываются структуры и некоторые процедуры для работы с файлами MS XLS. Он является частью серии статей, которые вводят формат двоичного файла, используемый Microsoft Office продуктов. Эти статьи предназначены для использования в сочетании с Office File Format Documents в MSDN.
Общие сведения о двоичном формате файла MS XLS
Формат двоичных файлов MS XLS используется Microsoft OfficeExcel 2003 г., Microsoft Excel 2002 г., Microsoft Excel 2000 и Microsoft Excel 97. Формат состоит из потоков и потоков. Каждый лист электронной таблицы хранятся в собственной подпотоков. Все данные, содержащиеся в записи, содержащие заголовки, дающие записей типа и длины. Записи ячейки, которые содержат реальные данные ячеек, а также формулы в ячейке свойства, находящиеся в ячейке таблицы. Строковые значения не хранятся записи ячейки, но в таблице общей строки, которая ссылается на ячейку записи. Записи строки содержат сведения о свойствах для ячеек, строк и ячеек. Только ячейки, содержащие данные или форматирование отдельных хранятся в подпотоков.
Microsoft Office Excel 2007 использует MS-XLSB binary file format. Этот формат аналогичен MS XLS, но явно не рассматривается в данной статье.
Основные компоненты формата MS XLS
Формат файла MS XLS содержит потоки, потоков и records. Все записи в документ MS XLS начинаются с 2-байтовое целое число без знака для указания типа записи, а другой для размер записи. Запись не может превышать 8224 байт. В случае больше данных, запись относится к остальной хранится в один или несколько continue records.
Ниже приведены основные потоки, потоков и записи в файл формата MS XLS.
поток Workbook
Поток Workbook является основной поток в XLS-файла. Он содержит несколько потоков, каждый из которых начинается с начала файла (BOF) записи и заканчивается на запись в конец файла (EOF). Первый поток всегда подпотоков Globals, а остальные подпотоки sheet. К ним относятся листы, листы макросов, листы диаграмм, листы диалогов и листы модулей VBA.
подпотоков Globals
Globals подпотоков определяет глобальные свойства и данные в книге. Он также включает BoundSheet8 запись для каждого подпотоков Workbook поток.
запись BoundSheet8
Запись BoundSheet8 сведения о подпотоков листа. Это включает в себя имя, расположение, тип и видимости. Первые 4 байта для записи, lbPlyPos FilePointer указывает позицию в потоке Workbook, которой начинается подпотоков листа.
подпотоков Worksheet
Worksheet подпотоков указывает листа в книге.
-
В таблице ячейка является частью потока лист, где хранятся ячейки. Он содержит ряд строк блоков, каждый из которых обладает емкостью 32 строк ячеек и заполняются последовательно. Каждый блок строка начинается с серии записей Row , следуют ячейки, перейдите в строках, и заканчивается DBCell записи, которая дает начальное смещение первой ячейки каждой строки в блоке.
запись Row
Запись Row определение строки в таблицу. Это представляет собой сложную структуру, но первые 6 байт необходимы для получения основных содержимого. Это позволяет индекс строки и столбцы первой и последней ячейки, содержащие данные или уникального форматирования строки.
Ячейки
Все ячейки в строке блока сохраняются после последней строки в блоке. Существует семь типов записей, представляющих фактические ячейки на листе. Большинство записей ячейки начинаются с 6-байтного Cell структуру. Первые 2 эти байты указать строку, следующие два байта указать столбец, а последние 2 байта укажите записи XF в подпотоков Globals, который содержит сведения о форматировании.
Следующие записи представляют различные виды ячеек. Если не указано иное, первые 6 байтов занимаемое структуру ячеек, а оставшиеся байты содержат значения.
запись Blank ячейки
Запись ячейки Blank задает пустую ячейку, которая не имеет формулы или значения. Этот тип записи используется только для ячеек, содержащих отдельные форматирования; в противном случае пустых ячеек хранятся в записях MulBlank или вообще.
запись RK ячейки
Запись RK ячейка содержит 32-разрядное число. Excel автоматически преобразует числа, которые могут быть представленными в 32 бит или меньше, в этот формат для хранения как способ уменьшить размер файла. Вместо структуры ячейки 6 байтов первые 2 байта определяют строку и второй 2 байта указать столбец. Оставшиеся 6 байт определяют номер в структуре RkRec для оптимизации диска и памяти.
запись BoolErr ячейки
Запись ячейки BoolErr содержит структуру Bes 2-байтовое значение типа Boolean или код ошибки.
запись Number ячейки
Запись Number ячейка содержит 64-разрядное число с плавающей запятой.
запись LabelSst ячейки
Запись LabelSst ячейка содержит 4-байтовое целое число, которое указывает строку в таблице общих строк (SST). В частности целое число, которое соответствует индекс массива в поле RGB SST.
запись Formula ячейки
Запись ячейка Formula содержит формулу и полученные данные. В структуре FormulaValue в 8 байт, которые следуют за структуру ячеек определяется значением, отображаемым в ячейке. Следующие 6 байт может игнорируются, а остальная часть записи является CellParsedFormula структуру, содержащую сама формула.
запись MulBlank
Запись MulBlank задает набор пустых ячеек в строке.
Первые 2 байта новой строки и следующие два байта предоставить столбец, который начинается последовательность пробелов. Далее следует за переменной длины массива структур cell для хранения сведений о форматировании и последние 2 байта Показать столбец серии пустые ячейки заканчивается на.
запись MulRK
Запись MulRk подобно MulBlank записи, но вместо пустых ячеек, MulRk запись состоит из RK данных в структуры RkRec.
-
Общие строки таблицы (SST) содержит все строковые значения в книге. Эти значения ссылается на листе LabelSst записи ячейки. Первые 8 байт SST предоставить номер ссылки на строки в книге и количество уникальных строковых значений в SST. Остальные представляет собой массив структур XLUnicodeRichExtendedString, содержащих строки, сами по себе в виде массивов знаков. 16 Бит эта структура определяет, должны ли символы 1 байт или 2 байта. SST структура и структура XLUnicodeRichExtendedString можно расширить с помощью Continue записей, если номер или длина строки превышает их границ.
-
Извлечение данных из файлов Excel
Все содержимое файла формата MS XLS живет в подпотоки листа. Несмотря на то, что удалось загрузить каждый лист подпотоков беспорядочно, получить большую управляемость и эффективность с помощью BoundSheet8 записей для поиска только листы, которые требуется прочитать. Следующая процедура показывает, как доступ ко всем данным из листа.
Примечание
Разбор формул и сведения о форматировании, выходит за рамки данной статьи.
Для чтения содержимого листа Excel
Создайте внутреннюю структуру данных для хранения содержимого листа.
Определение объектов для представления каждого из типов записей восемь ячейку в памяти.
Откройте поток Workbook и сканирование для первого экземпляра BOF записи. Это начало подпотоков Globals.
Чтение подпотоков Globals, загрузка записей BoundSheet8 и SST в памяти. Более подробные сведения содержатся в разделе Globals.
От BoundSheet8 запись, которая соответствует подпотоков, нужно открыть, прочитать первые 4 байта, который содержит lbPlyPos FilePointer.
Перейти на смещение в поток, указанный по lbPlyPos FilePointer. Это BOF запись журнала.
Прочитать следующую запись в подпотоков, являющийся записью Index, и загрузить массив указателей, который начинается с byte 16 Index записи. Каждый указатель ссылается на позицию в потоке записи DBCell.
Для каждого указателя в массиве:
Прочитайте соответствующую запись DBCell.
Перейдите на смещение, указанное по 5-6 байтов, DBCell записи и считывания в память все записи ячейки, на данный момент начала и окончания с последнего байта до DBCell.
Скопируйте ячейку записи в объекты, определенные в структуре внутренние данные по типу записи.
Анализ данных ячейки.
Заключение
Это только выборка MS XLS формат файла. С помощью средств, имеющихся в этой статье, простого восстановления должна быть в пределах аудитории. С помощью дополнительных исследований вы можете восстановить формулы, сведения о форматировании и другие метаданные. И в конечном итоге даже операции сохранения станет возможным.
Дополнительные ресурсы
Дополнительные сведения см. в следующих документах, в которых описывается:
[MS-XLS]: Excel Binary File Format (.xls) Structure Specification
Откройте Центр разработчиков спецификации (Возможно, на английском языке)
Средство Office визуализатор (Возможно, на английском языке)
Примечание
Отказ от ответственности относительно машинного перевода. Данная статья была переведена с помощью компьютерной системы без участия человека. Microsoft предлагает эти машинные переводы, чтобы помочь пользователям, которые не знают английского языка, ознакомиться с материалами о продуктах, услугах и технологиях Microsoft. Поскольку статья была переведена с использованием машинного перевода, она может содержать лексические,синтаксические и грамматические ошибки.