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. 典型的电子表格元素