使用表格 (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

TableColumn

autoFilter

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>