使用条件格式

本主题讨论 Open XML SDK ConditionalFormatting 类及其与 Open XML 文件格式 SpreadsheetML 架构的关系。 有关构成 SpreadsheetML 文档的部件和元素的整体结构的详细信息,请参阅 SpreadsheetML 文档的结构


SpreadsheetML 中的条件格式

基于单元格的条件格式可为工作表内的数据提供结构。 在显示值的同时显示颜色有助于区分这些值的相对高度。 可以基于单元格的值对单元格应用多个格式选项。 可以突出显示排在顶部或底部的项、提供数据栏来显示进度条类型用户界面,或者使用色阶指示高值和低值。 条件格式可直接应用于工作表中的单元格。 值不一定为表的一部分。

所有条件格式设置存储在工作表级别。 工作表存储应用于单元格 <conditionalFormatting/> 或单元格系列的每种格式的一个元素。 应用格式的单元格的集合是使用 sqref 特性定义的。 特性 sqref 使用“from:to”表示法指定单元格区域,例如“A1:A10”。

下表列出了使用 ConditionalFormatting 类时使用的常见 Open XML SDK 类。

SpreadsheetML 元素 Open XML SDK 类
<cfRule/> ConditionalFormattingRule
<dataBar/> DataBar
<colorScale/> ColorScale
<iconSet/> IconSet

Open XML SDK 条件格式类

Open XML SDK ConditionalFormatting 类表示在 SpreadsheetML 文档的 <conditionalFormatting/> Open XML 文件格式架构中定义的表 () 元素。 ConditionalFormatting使用 类可操作 SpreadsheetML 文档中的各个<conditionalFormatting/>元素。

ISO/IEC 29500 规范中的以下信息介绍了 ConditionalFormatting (<conditionalFormatting/>) 元素。

条件格式是在指定条件成立时电子表格应用程序可以自动应用于单元格的格式(如单元格底纹或字体颜色)。 此集合表示应用于特定单元格或区域的条件格式规则。

示例:此示例将“top10”规则应用于单元格 C3:C8。 引用 @dxfId 在样式部分) 中定义的格式设置 (,以应用于符合条件的单元格。

    <conditionalFormatting sqref="C3:C8">
        <cfRule type="top10" dxfId="1" priority="3" rank="2"/>
    </conditionalFormatting>

© ISO/IEC 29500:2016

条件格式规则类

ISO/IEC 29500 规范中的以下信息介绍了 ConditionalFormattingRule (<cfRule/>) 元素。

此集合表示对条件格式规则的说明。

示例:

此示例演示可突出显示其值大于 0.5 的单元格的条件格式规则。 请注意,在此情况下,<formula/> 的内容是静态值,但也可以是公式表达式。

    <conditionalFormatting sqref="E3:E9">
        <cfRule type="cellIs" dxfId="0" priority="1" operator="greaterThan">
            <formula>0.5</formula>
        </cfRule>
    <conditionalFormatting>

只有具有表达式的类型属性值的规则才支持公式语法。

© ISO/IEC 29500:2016

每个条件格式可以指定多种格式规则。 例如,可以同时应用色阶和数据栏格式。 每个条件格式都使用单独的 <cfRule/> 元素表示。 若要指定其用户界面显示优先级, priority 可以使用 属性。 由于元素 <conditionalFormatting/> 可以与工作表上其他带格式的区域重叠,因此针对该工作表定义的所有条件格式的优先级是全局的。

元素 <cfRule/> 具有许多格式设置类型,例如 cellIstop10,可以应用。 Each type of formatting uses common elements to define its settings. 有关条件格式规则属性的详细信息,请参阅 ISO/IEC 29500 规范。

数据栏类

ISO/IEC 29500 规范中的以下信息介绍了 DataBar (<dataBar/>) 元素。

描述数据栏条件格式规则。

示例:

在此示例中,表达了一个数据栏条件格式,该格式分布在单元格区域内的所有单元格值中,其颜色为蓝色。

    <dataBar>
        <cfvo type="min" val="0"/>
        <cfvo type="max" val="0"/>
        <color rgb="FF638EC6"/>
    </dataBar>

可按如下方式计算任意单元格的数据栏长度:

数据栏长度 = 最小长度 + (单元格值 - 区域中的最小值) / (区域中的最大值 - 区域中的最小值) * (最大长度 - 最小长度),

其中,最小长度和最大长度是列宽的固定百分比(默认情况下分别为 10% 和 90%。)

最小长度差异(或增量)为一个像素。

© ISO/IEC 29500:2016

数据栏采用单一颜色并显示为条。 条的长度指示单元格值的相对高度。 数据栏使用条件格式规则内的单独模型定义其设置。 元素 <dataBar/> 存储所有相关数据。 数据栏需要三个设置:与单元格值进行比较的最小值和最大值以及颜色。 第一个 <cfvo/> 元素或条件格式值对象定义最小值,第二个 <cfvo/> 元素定义最大值。 可以使用不同方式指定值,如使用公式或硬编码值。 另一种常用的选择方案是使用"min"和"max"类型。 这些 <cfvo/> 元素类型指定在已应用格式的单元格区域中找到的最小值和最大值。 这样可以在最低项和最高项之间提供清晰的阶梯式渐变。 此外,还可以使用 <color/> 元素指定数据栏的颜色。

色阶类

ISO/IEC 29500 规范中的以下信息介绍了 ColorScale (<colorScale/>) 元素。

描述此条件格式规则中的渐变色阶。

示例:

    <colorScale>
        <cfvo type="min" val="0"/>
        <cfvo type="max" val="0"/>
        <color theme="5"/>
        <color rgb="FFFFEF9C"/>
    </colorScale>

© ISO/IEC 29500:2016

色阶提供的显示可指示所有单元格项之间的相对值,这类似于数据栏。 色阶使用条件格式规则中的单独模型定义其设置。 最多可以指定三 <cfvo/>个 或条件格式值对象、元素值:一个用于刻度开头,一个用于刻度中间,一个用于刻度末尾。 中间值是可选的。 此外,可以使用 元素指定色阶的颜色 <color/>

图标集类

ISO/IEC 29500 规范中的以下信息介绍了 IconSet (<iconSet/>) 元素。

描述图标集条件格式规则。

示例:此示例演示图标的“3Arrows”样式。 如果单元格的值小于第 33 百分位数,则必须显示集合中的第一个图标。 如果单元格的值小于第 67 百分位数并大于或等于第 33 百分位数,则必须显示集合中的第二个图标。 如果单元格的值大于或等于第 67 百分位数,则必须显示集合中的第三个图标。

    <iconSet iconSet="3Arrows">
        <cfvo type="percentile" val="0"/>
        <cfvo type="percentile" val="33"/>
        <cfvo type="percentile" val="67"/>
    </iconSet>

© ISO/IEC 29500:2016

使用图标集可以对包含数据的单元格应用不同的图标集合。 图标集使用一系列值标识要对哪一组单元格应用格式规则。 第一个 <cfvo/> 元素标识范围的最低值,第二个 <cfvo/>元素标识中间点,第三 <cfvo/> 个元素标识最高值。 图标集标识要应用于单元格的图标。 可以从各种硬编码图标中进行选择。 有关可用图标的详细信息,请参阅 ISO/IEC 29500 规范。