SpreadsheetML 文档的结构

文档的文档SpreadsheetML结构由包含 <sheets/> 的元素和<sheet/>引用工作簿中工作表的元素组成<workbook/>。 将为每张工作表创建单独的 XML 文件。 这些元素是有效电子表格文档所需的最小元素。 此外,电子表格文档可能包含 <table/><chartsheet/><pivotTableDefinition/>或其他与电子表格相关的元素。

注意

有兴趣开发跨多个平台扩展 Office 体验的解决方案吗? 查看新的 Office 外接程序模型。 与VSTO外接程序和解决方案相比,Office外接程序占用的空间较小,您可以使用几乎任何Web编程技术(例如HTML5,JavaScript,CSS3和XML)来构建它们。


重要电子表格部分

使用 Open XML SDK for Office,可以创建使用与元素对应的 SpreadsheetML 强类型类的文档结构和内容。 可以在 命名空间中找到 DocumentFormat.OpenXML.Spreadsheet 这些类。 下表列出了一些重要电子表格元素所对应类的类名称。

包部分 顶级 SpreadsheetML 元素 Open XML SDK 类 说明
工作簿 <workbook/> Workbook 主文档部件的根元素。
Worksheet <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(该链接可能指向英文页面) 的以下文本介绍最小工作簿方案。

可能的最小(空白)工作簿必须包含以下内容:

一个工作表

工作表 ID

指向工作表定义的位置的关系 Id

? Ecma International: 2006 年 12 月。

Open XML SDK 代码示例

此代码示例使用 Open XML SDK 中的类创建最小空白工作簿。

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 文档的结构