org.apache.poi.hssf.usermodel

## Class HSSFConditionalFormattingRule

- java.lang.Object
- - org.apache.poi.hssf.usermodel.HSSFConditionalFormattingRule

- All Implemented Interfaces:
    ConditionalFormattingRule, DifferentialStyleProvider

      public final class HSSFConditionalFormattingRule
      extends java.lang.Object
      implements ConditionalFormattingRule

  High level representation of Conditional Formatting Rule. It allows to specify formula based conditions for the Conditional Formatting and the formatting settings such as font, border and pattern.

- - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `HSSFBorderFormatting` | `createBorderFormatting()` create a new border formatting structure if it does not exist, otherwise just return existing object.
    `HSSFColorScaleFormatting` | `createColorScaleFormatting()` create a new color scale / gradient formatting object if it does not exist, otherwise just return the existing object.
    `HSSFDataBarFormatting` | `createDataBarFormatting()` create a new databar / data-bar formatting object if it does not exist, otherwise just return the existing object.
    `HSSFFontFormatting` | `createFontFormatting()` create a new font formatting structure if it does not exist, otherwise just return existing object.
    `HSSFIconMultiStateFormatting` | `createMultiStateFormatting()` create a new icon / multi-state formatting object if it does not exist, otherwise just return the existing object.
    `HSSFPatternFormatting` | `createPatternFormatting()` create a new pattern formatting structure if it does not exist, otherwise just return existing object.
    `HSSFBorderFormatting` | `getBorderFormatting()`
    `HSSFColorScaleFormatting` | `getColorScaleFormatting()`
    `byte` | `getComparisonOperation()` The comparison function used when the type of conditional formatting is set to `ConditionType.CELL_VALUE_IS`
    `ConditionFilterType` | `getConditionFilterType()` always null (not a filter condition) or `ConditionFilterType.FILTER` if it is.
    `ConditionType` | `getConditionType()` Type of conditional formatting rule.
    `HSSFDataBarFormatting` | `getDataBarFormatting()`
    `ConditionFilterData` | `getFilterConfiguration()` This is null if
    `HSSFFontFormatting` | `getFontFormatting()`
    `java.lang.String` | `getFormula1()` The formula used to evaluate the first operand for the conditional formatting rule.
    `java.lang.String` | `getFormula2()` The formula used to evaluate the second operand of the comparison when comparison type is `ConditionType.CELL_VALUE_IS` and operator is either `ComparisonOperator.BETWEEN` or `ComparisonOperator.NOT_BETWEEN`
    `HSSFIconMultiStateFormatting` | `getMultiStateFormatting()`
    `ExcelNumberFormat` | `getNumberFormat()` Always null for HSSF records, until someone figures out where to find it
    `HSSFPatternFormatting` | `getPatternFormatting()`
    `int` | `getPriority()` Only newer style formatting rules have priorities.
    `boolean` | `getStopIfTrue()` Always true for HSSF files, per Microsoft Excel documentation
    `int` | `getStripeSize()` Conditional format rules don't define stripes, so always 0
    `java.lang.String` | `getText()` XSSF rules store textual condition values as an attribute and also as a formula that needs shifting.
    `protected java.lang.String` | `toFormulaString(Ptg[] parsedExpression)`
    `protected static java.lang.String` | `toFormulaString(Ptg[] parsedExpression, HSSFWorkbook workbook)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### getPriority

          public int getPriority()

      Only newer style formatting rules have priorities. For older ones, we don't know priority for these, other than definition/model order, which appears to be what Excel uses.
      Specified by:
        `getPriority` in interface `ConditionalFormattingRule`
      Returns:
        rule priority
      See Also:
        `ConditionalFormattingRule.getPriority()`

    - #### getStopIfTrue

          public boolean getStopIfTrue()

      Always true for HSSF files, per Microsoft Excel documentation
      Specified by:
        `getStopIfTrue` in interface `ConditionalFormattingRule`
      Returns:
        true if conditional formatting rule processing stops when this one is true, false if not
      See Also:
        `ConditionalFormattingRule.getStopIfTrue()`

    - #### getNumberFormat

          public ExcelNumberFormat getNumberFormat()

      Always null for HSSF records, until someone figures out where to find it
      Specified by:
        `getNumberFormat` in interface `ConditionalFormattingRule`
      Specified by:
        `getNumberFormat` in interface `DifferentialStyleProvider`
      Returns:
        number format defined for this rule, or null if the cell default should be used
      See Also:
        `ConditionalFormattingRule.getNumberFormat()`

    - #### getFontFormatting

          public HSSFFontFormatting getFontFormatting()

      Specified by:
        `getFontFormatting` in interface `ConditionalFormattingRule`
      Specified by:
        `getFontFormatting` in interface `DifferentialStyleProvider`
      Returns:
        - font formatting object if defined, `null` otherwise

    - #### createFontFormatting

          public HSSFFontFormatting createFontFormatting()

      create a new font formatting structure if it does not exist, otherwise just return existing object.
      Specified by:
        `createFontFormatting` in interface `ConditionalFormattingRule`
      Returns:
        - font formatting object, never returns `null`.

    - #### getBorderFormatting

          public HSSFBorderFormatting getBorderFormatting()

      Specified by:
        `getBorderFormatting` in interface `ConditionalFormattingRule`
      Specified by:
        `getBorderFormatting` in interface `DifferentialStyleProvider`
      Returns:
        - border formatting object if defined, `null` otherwise

    - #### createBorderFormatting

          public HSSFBorderFormatting createBorderFormatting()

      create a new border formatting structure if it does not exist, otherwise just return existing object.
      Specified by:
        `createBorderFormatting` in interface `ConditionalFormattingRule`
      Returns:
        - border formatting object, never returns `null`.

    - #### getPatternFormatting

          public HSSFPatternFormatting getPatternFormatting()

      Specified by:
        `getPatternFormatting` in interface `ConditionalFormattingRule`
      Specified by:
        `getPatternFormatting` in interface `DifferentialStyleProvider`
      Returns:
        - pattern formatting object if defined, `null` otherwise

    - #### createPatternFormatting

          public HSSFPatternFormatting createPatternFormatting()

      create a new pattern formatting structure if it does not exist, otherwise just return existing object.
      Specified by:
        `createPatternFormatting` in interface `ConditionalFormattingRule`
      Returns:
        - pattern formatting object, never returns `null`.

    - #### getDataBarFormatting

          public HSSFDataBarFormatting getDataBarFormatting()

      Specified by:
        `getDataBarFormatting` in interface `ConditionalFormattingRule`
      Returns:
        databar / data-bar formatting object if defined, `null` otherwise

    - #### createDataBarFormatting

          public HSSFDataBarFormatting createDataBarFormatting()

      create a new databar / data-bar formatting object if it does not exist, otherwise just return the existing object.

    - #### getMultiStateFormatting

          public HSSFIconMultiStateFormatting getMultiStateFormatting()

      Specified by:
        `getMultiStateFormatting` in interface `ConditionalFormattingRule`
      Returns:
        icon / multi-state formatting object if defined, `null` otherwise

    - #### createMultiStateFormatting

          public HSSFIconMultiStateFormatting createMultiStateFormatting()

      create a new icon / multi-state formatting object if it does not exist, otherwise just return the existing object.

    - #### getColorScaleFormatting

          public HSSFColorScaleFormatting getColorScaleFormatting()

      Specified by:
        `getColorScaleFormatting` in interface `ConditionalFormattingRule`
      Returns:
        color scale / gradient formatting object if defined, `null` otherwise

    - #### createColorScaleFormatting

          public HSSFColorScaleFormatting createColorScaleFormatting()

      create a new color scale / gradient formatting object if it does not exist, otherwise just return the existing object.

    - #### getConditionType

          public ConditionType getConditionType()

      Description copied from interface: `ConditionalFormattingRule`
      Type of conditional formatting rule.
      Specified by:
        `getConditionType` in interface `ConditionalFormattingRule`
      Returns:
        - the conditiontype for the cfrule

    - #### getConditionFilterType

          public ConditionFilterType getConditionFilterType()

      always null (not a filter condition) or `ConditionFilterType.FILTER` if it is.
      Specified by:
        `getConditionFilterType` in interface `ConditionalFormattingRule`
      Returns:
        filter type for filter rules, or null if not a filter rule.
      See Also:
        `ConditionalFormattingRule.getConditionFilterType()`

    - #### getFilterConfiguration

          public ConditionFilterData getFilterConfiguration()

      Description copied from interface: `ConditionalFormattingRule`
      This is null if

      ``ConditionalFormattingRule.getConditionFilterType()` == null`

      This means it is always null for HSSF, which does not define the extended condition types.

      This object contains the additional configuration information for XSSF filter conditions.

      Specified by:
        `getFilterConfiguration` in interface `ConditionalFormattingRule`
      Returns:
        the Filter Configuration Data, or null if there isn't any

    - #### getComparisonOperation

          public byte getComparisonOperation()

      Description copied from interface: `ConditionalFormattingRule`
      The comparison function used when the type of conditional formatting is set to `ConditionType.CELL_VALUE_IS`

      MUST be a constant from `ComparisonOperator`

      Specified by:
        `getComparisonOperation` in interface `ConditionalFormattingRule`
      Returns:
        - the comparisionoperatation for the cfrule

    - #### getFormula1

          public java.lang.String getFormula1()

      Description copied from interface: `ConditionalFormattingRule`
      The formula used to evaluate the first operand for the conditional formatting rule.

      If the condition type is `ConditionType.CELL_VALUE_IS`, this field is the first operand of the comparison. If type is `ConditionType.FORMULA`, this formula is used to determine if the conditional formatting is applied.

      If comparison type is `ConditionType.FORMULA` the formula MUST be a Boolean function

      Specified by:
        `getFormula1` in interface `ConditionalFormattingRule`
      Returns:
        the first formula

    - #### getFormula2

          public java.lang.String getFormula2()

      Description copied from interface: `ConditionalFormattingRule`
      The formula used to evaluate the second operand of the comparison when comparison type is `ConditionType.CELL_VALUE_IS` and operator is either `ComparisonOperator.BETWEEN` or `ComparisonOperator.NOT_BETWEEN`
      Specified by:
        `getFormula2` in interface `ConditionalFormattingRule`
      Returns:
        the second formula

    - #### getText

          public java.lang.String getText()

      Description copied from interface: `ConditionalFormattingRule`
      XSSF rules store textual condition values as an attribute and also as a formula that needs shifting. Using the attribute is simpler/faster. HSSF rules don't have this and return null. We can fall back on the formula for those (AFAIK).
      Specified by:
        `getText` in interface `ConditionalFormattingRule`
      Returns:
        condition text if it exists, or null

    - #### toFormulaString

          protected java.lang.String toFormulaString(Ptg[] parsedExpression)

    - #### toFormulaString

          protected static java.lang.String toFormulaString(Ptg[] parsedExpression,
                                                            HSSFWorkbook workbook)

    - #### getStripeSize

          public int getStripeSize()

      Conditional format rules don't define stripes, so always 0
      Specified by:
        `getStripeSize` in interface `DifferentialStyleProvider`
      Returns:
        number of rows/columns in a stripe for stripe styles, 0 for all others
      See Also:
        `DifferentialStyleProvider.getStripeSize()`

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.