Поделиться через


Структура документа SpreadsheetML

Структура SpreadsheetML документа состоит из <workbook/> элемента, содержащего <sheets/> элементы и <sheet/> ссылающиеся на листы в книге. Для каждого листа создается отдельный XML-файл. Это минимальные обязательные элементы для допустимого документа электронной таблицы. Кроме того, документ электронной таблицы может содержать <table/>, <chartsheet/>, <pivotTableDefinition/>или другие элементы, связанные с электронной таблицей.

Примечание.

Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, например HTML5, JavaScript, CSS3 и XML.


Важные части электронных таблиц

С помощью пакета SDK Open XML для Office можно создать структуру документа и содержимое, в котором используются строго типизированные классы, соответствующие SpreadsheetML элементам. Эти классы можно найти в DocumentFormat.OpenXML.Spreadsheet пространстве имен. В следующей таблице перечислены имена классов, соответствующие некоторым важным элементам электронной таблицы.

Часть пакета Элемент SpreadsheetML верхнего уровня Класс пакета SDK Open XML Описание
Книга <workbook/> Workbook Корневой элемент основной части документа.
Лист <worksheet/> Worksheet Тип листа, представляющий таблицу ячеек, которая содержит текст, числа, даты и формулы. Дополнительные сведения см. в разделе Работа с листами.
Лист диаграммы <chartsheet/> Chartsheet Лист, представляющий диаграмму, которая хранится в отдельном листе. Дополнительные сведения см. в разделе Работа с листами.
Таблица <table/> Table Логическая конструкция, которая определяет диапазон данных, принадлежащий одному набору данных. Дополнительные сведения см. в статье Работа с таблицами SpreadsheetML.
Сводная таблица <pivotTableDefinition/> PivotTableDefinition Логическая конструкция, отображающая объединенное представление данных в понятном формате. Дополнительные сведения см. в статье Working with PivotTables.
Сводный кэш <pivotCacheDefinition/> PivotCacheDefinition Конструкция, определяющая источник данных в сводной таблице. Дополнительные сведения см. в статье Working with PivotTables.
Записи сводного кэша <pivotCacheRecords/> PivotCacheRecords Кэш исходных данных сводной таблицы. Дополнительные сведения см. в разделе Working with PivotTables.
Цепочка вычислений <calcChain/> CalculationChain Конструкция, указывающая порядок вычислений ячеек в книге в последний раз. Дополнительные сведения см. в разделе Работа с цепочкой вычислений.
Общая строковая таблица <sst/> SharedStringTable Конструкция, которая содержит один экземпляр каждой уникальной строки во всех листах книги. Дополнительные сведения см. в разделе Работа с общей таблицей строк.
Условное форматирование <conditionalFormatting/> ConditionalFormatting Конструкция, определяющая формат, который применяется к ячейке или последовательности ячеек. Дополнительные сведения см. в статье Работа с условным форматированием.
Формулы <f/> CellFormula Конструкция, определяющая текст формулы для ячейки с формулой. Дополнительные сведения см. в разделе Работа с формулами.

Простейший случай книги

В приведенном ниже тексте из стандарта ECMA-376 представлен простейший случай книги.

Самая маленькая (пустая) книга должна содержать следующие элементы:

один лист;

идентификатор листа;

идентификатор связи, указывающий на расположение определения листа.

© Ecma International: декабрь 2006 г.

Пример кода Open XML SDK

В этом примере кода классы в пакете SDK Open XML используются для создания минимальной пустой книги.

static void CreateSpreadsheetWorkbook(string filepath)
{
    // Create a spreadsheet document by supplying the filepath.
    // By default, AutoSave = true, Editable = true, and Type = xlsx.
    using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook))
    {
        // Add a WorkbookPart to the document.
        WorkbookPart workbookPart = spreadsheetDocument.AddWorkbookPart();
        workbookPart.Workbook = new Workbook();

        // Add a WorksheetPart to the WorkbookPart.
        WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
        worksheetPart.Worksheet = new Worksheet(new SheetData());

        // Add Sheets to the Workbook.
        Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());

        // Append a new worksheet and associate it with the workbook.
        Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "mySheet" };
        sheets.Append(sheet);
    }
}

Типичный случай книги

Типичная книга отличается от пустой книги с минимальной структурой. Она может содержать числа, текст, диаграммы, таблицы и сводные таблицы. Каждая из дополнительных частей размещена в ZIP-пакете электронной таблицы.

На следующем рисунке показаны основные элементы типичной электронной таблицы.

Рис. 2. Типичные элементы электронной таблицы

Структура документа SpreadsheetML