Работа с условным форматированием
В этом разделе рассматривается класс Open XML SDK ConditionalFormatting и его связь со схемой SpreadsheetML формата файла Open XML. Дополнительные сведения об общей структуре частей и элементов, составляющих документ SpreadsheetML, см. в разделе Структура документа SpreadsheetML.
Условное форматирование в SpreadsheetML
Условное форматирование ячеек помогает лучше структурировать данные на листе. Когда в дополнение к значению, содержащемуся в ячейке, она выделяется цветом, различия между значениями становятся более наглядными. Доступно несколько видов условного форматирования, которые можно применять к ячейкам в зависимости от их значений. Можно выделять ячейки с максимальными и минимальными значениями, создавать гистограммы, помогающие пользователю лучше понять ход выполнения, или применять к значениям кодирование по цветовой шкале. Условное форматирование можно применять непосредственно к ячейкам на листе. Значение не обязательно должно быть частью таблицы.
Все параметры условного форматирования хранятся на уровне листа.
На листе хранится по одному <conditionalFormatting/>
элементу для каждого формата, примененного к ячейке или рядам ячеек. Коллекция ячеек, к которым применяется формат, определяется с помощью атрибута sqref
. Атрибут sqref
задает диапазон ячеек с использованием нотации from:to, например A1:A10.
В следующей таблице перечислены распространенные классы open XML SDK, используемые при работе с классом ConditionalFormatting
.
Элемент SpreadsheetML | Класс пакета SDK Open XML |
---|---|
<cfRule/> |
ConditionalFormattingRule |
<dataBar/> |
DataBar |
<colorScale/> |
ColorScale |
<iconSet/> |
IconSet |
Класс условного форматирования пакета SDK Open XML
Класс Open XML SDK ConditionalFormatting
представляет элемент таблицы (<conditionalFormatting/>
), определенный в схеме формата файлов Open XML для документов SpreadsheetML. Используйте класс для ConditionalFormatting
управления отдельными <conditionalFormatting/>
элементами в документе SpreadsheetML.
В следующей информации из спецификации 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
Класс ConditionalFormattingRule
В следующей информации из спецификации 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>
Синтаксис формул поддерживается только в тех правилах, в которых атрибут type имеет значение выражения.
© ISO/IEC 29500: 2016
Для каждого вида условного форматирования можно определять различные правила форматирования.
Например, можно одновременно применить цветовую шкалу и гистограмму. Каждый условный формат представлен с помощью отдельного <cfRule/>
элемента. Чтобы указать приоритет отображения пользовательского priority
интерфейса, можно использовать атрибут .
<conditionalFormatting/>
Так как элемент может перекрывать другие отформатированные области листа, приоритет является глобальным для всех условных форматов, определенных для этого листа.
Элемент <cfRule/>
имеет множество типов форматирования, таких как cellIs
и top10
, которые можно применить. Каждый тип форматирования настраивается с использованием общих элементов. Дополнительные сведения об атрибутах правил условного форматирования см. в спецификации ISO/IEC 29500.
Класс DataBar
В следующей информации из спецификации ISO/IEC 29500 представлен DataBar
элемент (<dataBar/>
).
Этот класс описывает правило условного форматирования в виде гистограммы.
Пример:
В этом примере показано условное форматирование в виде гистограммы, охватывающей все значения в диапазоне ячеек и выделенной синим цветом.
<dataBar>
<cfvo type="min" val="0"/>
<cfvo type="max" val="0"/>
<color rgb="FF638EC6"/>
</dataBar>
Длина полосы гистограммы для каждой ячейки рассчитывается по следующей формуле:
Длина полосы гистограммы = минимальная длина + (значение в ячейке - минимальное значение в диапазоне) / (максимальное значение в диапазоне - минимальное значение в диапазоне) * (максимальная длина - минимальная длина),
где минимальная и максимальная длины определяются в процентах от ширины столбца (по умолчанию 10 % и 90 % соответственно).
Минимальная разница в длине (то есть приращение) составляет 1 пиксель.
© ISO/IEC 29500: 2016
Гистограмма состоит из полос одного цвета. Длина полосы указывает на относительную величину значения в ячейке. Параметры гистограммы задаются отдельной моделью в правиле условного форматирования. Элемент <dataBar/>
хранит все соответствующие данные. Для построения гистограммы требуются три параметра: минимальное значение, максимальное значение (с которыми сравниваются значения в ячейках) и цвет. Первый <cfvo/>
элемент, или объект значения условного формата, определяет минимальное значение, второй <cfvo/>
— максимальное значение. Можно указать значение различными способами, например определить как формулу или жестко запрограммировать. Можно также использовать типы "min" и "max". Эти <cfvo/>
типы элементов указывают минимальное и максимальное значения, найденные в диапазоне ячеек с примененным форматом. Это обеспечивает понятный постепенный переход от наименьших значений к наибольшим. Кроме того, можно указать цвет панели данных с помощью <color/>
элемента .
Класс ColorScale
В следующей информации из спецификации 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/>
с помощью элемента .
Класс IconSet
В следующей информации из спецификации 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.