使用表格 (SpreadsheetML)
上次修改时间: 2010年10月8日
适用范围: Excel 2010 | Office 2010 | PowerPoint 2010 | Word 2010
本主题讨论 Open XML SDK 2.0Table 类以及它与 Open XML 文件格式 SpreadsheetML 架构的关系。有关构成 SpreadsheetML 文档的部件和元素的整体结构的详细信息,请参阅 SpreadsheetML 文档的结构。
SpreadsheetML 中的表格
ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下信息介绍了 table (<table>) 元素。
表格帮助组织工作表中的信息列表和向信息列表提供结构。表格具有明确标记的列、行和数据区域。通过表格,用户可以更轻松地排序、分析、格式化、管理、添加和删除信息。
如果将数据区域指定为表格,则可以应用帮助用户执行有用操作的特殊行为。[示例:如果用户在与表格底端相邻的行中键入其他数据,则表格可以扩展并自动将该数据添加到表格的数据区域。同样,添加列与在当前列标题的右侧或左侧键入新列标题一样简单。筛选和排序功能可以通过下拉箭头自动呈现给用户。可以创建汇总或计算表格数据的特殊计算列。这些列能够根据表格大小扩大和缩小,并且能够维护正确的公式引用。示例结束]
可以基于以下几项创建表格:工作表中已经存在的数据、外部数据查询或者重复 XML 元素集合与工作表区域的映射。
工作表 XML 存储数字和文本数据。表格 XML 记录特定表格对象的各个属性。
© ISO/IEC29500: 2008。
SpreadsheetML 表格是一个逻辑构造,指定属于单个数据集的数据区域。SpreadsheetML 已经使用类似表格的模型指定行和列中的值,但是您也可以将工作表的子集标记为 table 并向它提供有助于进行分析的某些属性。通过 SpreadsheetML 中的表格,您可以使用新的方式分析数据,如使用数据筛选、格式化和绑定。
与 SpreadsheetML 中的其他构造一样,工作表中的表格存储在包的单独部件中。表格部件不包含任何表格数据。数据在工作表单元格中进行维护。有关工作表中存储的数据的详细信息,请参阅使用工作表。
下表列出了在处理 Table 类时使用的常用 Open XML SDK 2.0 类。
SpreadsheetML 元素 |
Open XML SDK 2.0 类 |
---|---|
tableColumn |
|
autoFilter |
Open XML SDK 2.0 Table 类
Open XML SDK 2.0Table 类表示在 SpreadsheetML 文档的 Open XML 文件格式架构中定义的表 (<table>) 元素。使用 Table 类可对 SpreadsheetML 文档中的各个 <table> 元素进行操作。
ISO/IEC 29500 规范中的以下信息介绍了 table (<table>) 元素。
此部件类型的实例包含单个表格的描述及其自动筛选信息。(表格的数据存储在相应工作表部件中。)
此内容类型的部件的根元素应该为表格。
© ISO/IEC29500: 2008。
表格部件包含单个表格的定义。如果一个工作表上存在多个表格,则存在多个表格部件。此部件的根元素是表格。从最低限度上讲,表格仅需要有关组成表格的表格列的信息。然而,若要启用自动筛选,则必须至少定义一个自动筛选器(可以为空)。如果不定义任何自动筛选器,则在 Excel 中打开文档时会禁用自动筛选。
table 元素具有几个用于标识表格和表格覆盖的数据区域的属性。id 和 name 属性在所有表格部件中必须唯一。displayName 属性在所有表格部件中必须唯一,并且在工作簿的所有已定义名称中也必须唯一。Excel 中的对象模型使用 name 属性。公式中的引用使用 displayName 属性。ref 属性用于标识表格覆盖的单元格区域。这不仅包括表格数据,还包括含有列名称的表格标题。有关表格属性的详细信息,请参阅 ISO/IEC 29500 规范。
TableColumn 类
若要向表格中添加列,请向 tableColumns 集合中添加新 tableColumn 元素。该集合具有跟踪列数的 count 属性。
ISO/IEC 29500 规范中的以下信息介绍了 TableColumn (<tableColumn>) 元素。
表示此表格的单个列的元素。
© ISO/IEC29500: 2008。
AutoFilter 类
ISO/IEC 29500 规范中的以下信息介绍了 AutoFilter (<autoFilter>) 元素。
自动筛选基于筛选条件暂时隐藏行,筛选条件逐列应用到工作表中的数据表格。此集合描述自动筛选设置。
[示例:此示例描述一个筛选器,该筛选器指明"仅显示大于 0.5 的值"。筛选器将应用到 B3:E8 区域,条件将应用到 colId=1(基于零的列编号,从左向右递增)的列中的值。因此,如果任何行的该特定列中的值小于或等于 0.5,则必须隐藏该行。
<autoFilter ref="B3:E8">
<filterColumn colId="1">
<customFilters>
<customFilter operator="greaterThan" val="0.5"/>
</customFilters>
</filterColumn>
</autoFilter>
示例结束]
© ISO/IEC29500: 2008。
SpreadsheetML 示例
此示例显示在 Sheet1 中包含一个表格的文件的 XML。表格包含三列和三行,以及一个列标题。
以下 XML 定义工作表并且包含在"sheet1.xml"文件中。该工作表 XML 文件包含显示在表格中的实际数据,并且包含引用"table1.xml"文件的 tablePart 元素,该文件包含表格定义。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="https://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="https://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="https://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="https://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">
<dimension ref="A1:C4"/>
<sheetViews>
<sheetView tabSelected="1" workbookViewId="0">
<selection sqref="A1:C4"/>
</sheetView>
</sheetViews>
<sheetFormatPr defaultRowHeight="15" x14ac:dyDescent="0.25"/>
<cols>
<col min="1" max="3" width="11" customWidth="1"/>
</cols>
<sheetData>
<row r="1" spans="1:3" x14ac:dyDescent="0.25">
<c r="A1" t="s">
<v>0</v>
</c>
<c r="B1" t="s">
<v>1</v>
</c>
<c r="C1" t="s">
<v>2</v>
</c>
</row>
<row r="2" spans="1:3" x14ac:dyDescent="0.25">
<c r="A2">
<v>1</v>
</c>
<c r="B2">
<v>2</v>
</c>
<c r="C2">
<v>3</v>
</c>
</row>
<row r="3" spans="1:3" x14ac:dyDescent="0.25">
<c r="A3">
<v>4</v>
</c>
<c r="B3">
<v>5</v>
</c>
<c r="C3">
<v>6</v>
</c>
</row>
<row r="4" spans="1:3" x14ac:dyDescent="0.25">
<c r="A4">
<v>7</v>
</c>
<c r="B4">
<v>8</v>
</c>
<c r="C4">
<v>9</v>
</c>
</row>
</sheetData>
<pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
<tableParts count="1">
<tablePart r:id="rId1"/>
</tableParts>
</worksheet>
以下 XML 定义表格并且包含在"table1.xml"文件中。该表格 XML 文件定义表格区域和表格的外观,并且定义表格的所有自动筛选器。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<table xmlns="https://schemas.openxmlformats.org/spreadsheetml/2006/main" id="1" name="Table1" displayName="Table1" ref="A1:C4" totalsRowShown="0">
<autoFilter ref="A1:C4"/>
<tableColumns count="3">
<tableColumn id="1" name="Column1"/>
<tableColumn id="2" name="Column2"/>
<tableColumn id="3" name="Column3"/>
</tableColumns>
<tableStyleInfo name="TableStyleMedium2" showFirstColumn="0" showLastColumn="0" showRowStripes="1" showColumnStripes="0"/>
</table>