Общие сведения о двоичном формате файлов 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 подпотоков указывает листа в книге.

    • Cell Table

      В таблице ячейка является частью потока лист, где хранятся ячейки. Он содержит ряд строк блоков, каждый из которых обладает емкостью 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.

    • Shared String Table (SST)

      Общие строки таблицы (SST) содержит все строковые значения в книге. Эти значения ссылается на листе LabelSst записи ячейки. Первые 8 байт SST предоставить номер ссылки на строки в книге и количество уникальных строковых значений в SST. Остальные представляет собой массив структур XLUnicodeRichExtendedString, содержащих строки, сами по себе в виде массивов знаков. 16 Бит эта структура определяет, должны ли символы 1 байт или 2 байта. SST структура и структура XLUnicodeRichExtendedString можно расширить с помощью Continue записей, если номер или длина строки превышает их границ.

Извлечение данных из файлов Excel

Все содержимое файла формата MS XLS живет в подпотоки листа. Несмотря на то, что удалось загрузить каждый лист подпотоков беспорядочно, получить большую управляемость и эффективность с помощью BoundSheet8 записей для поиска только листы, которые требуется прочитать. Следующая процедура показывает, как доступ ко всем данным из листа.

Примечание

Разбор формул и сведения о форматировании, выходит за рамки данной статьи.

Для чтения содержимого листа Excel

  1. Создайте внутреннюю структуру данных для хранения содержимого листа.

  2. Определение объектов для представления каждого из типов записей восемь ячейку в памяти.

  3. Откройте поток Workbook и сканирование для первого экземпляра BOF записи. Это начало подпотоков Globals.

  4. Чтение подпотоков Globals, загрузка записей BoundSheet8 и SST в памяти. Более подробные сведения содержатся в разделе Globals.

  5. От BoundSheet8 запись, которая соответствует подпотоков, нужно открыть, прочитать первые 4 байта, который содержит lbPlyPos FilePointer.

  6. Перейти на смещение в поток, указанный по lbPlyPos FilePointer. Это BOF запись журнала.

  7. Прочитать следующую запись в подпотоков, являющийся записью Index, и загрузить массив указателей, который начинается с byte 16 Index записи. Каждый указатель ссылается на позицию в потоке записи DBCell.

  8. Для каждого указателя в массиве:

    • Прочитайте соответствующую запись DBCell.

    • Перейдите на смещение, указанное по 5-6 байтов, DBCell записи и считывания в память все записи ячейки, на данный момент начала и окончания с последнего байта до DBCell.

    • Скопируйте ячейку записи в объекты, определенные в структуре внутренние данные по типу записи.

    • Анализ данных ячейки.

Заключение

Это только выборка MS XLS формат файла. С помощью средств, имеющихся в этой статье, простого восстановления должна быть в пределах аудитории. С помощью дополнительных исследований вы можете восстановить формулы, сведения о форматировании и другие метаданные. И в конечном итоге даже операции сохранения станет возможным.

Дополнительные ресурсы

Дополнительные сведения см. в следующих документах, в которых описывается:

Примечание

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