Class EvaluationConditionalFormatRule

java.lang.Object
org.apache.poi.ss.formula.EvaluationConditionalFormatRule
All Implemented Interfaces:
Comparable<EvaluationConditionalFormatRule>

public class EvaluationConditionalFormatRule extends Object implements Comparable<EvaluationConditionalFormatRule>
Abstracted and cached version of a Conditional Format rule for use with a ConditionalFormattingEvaluator. This references a rule, its owning ConditionalFormatting, its priority order (lower index = higher priority in Excel), and the information needed to evaluate the rule for a given cell.

Having this all combined and cached avoids repeated access calls to the underlying structural objects, XSSF CT* objects and HSSF raw byte structures. Those objects can be referenced from here. This object will be out of sync if anything modifies the referenced structures' evaluation properties.

The assumption is that consuming applications will read the display properties once and create whatever style objects they need, caching those at the application level. Thus this class only caches values needed for evaluation, not display.

  • Constructor Details

    • EvaluationConditionalFormatRule

      public EvaluationConditionalFormatRule(WorkbookEvaluator workbookEvaluator, Sheet sheet, ConditionalFormatting formatting, int formattingIndex, ConditionalFormattingRule rule, int ruleIndex, CellRangeAddress[] regions)
      Parameters:
      workbookEvaluator -
      sheet -
      formatting -
      formattingIndex - for priority, zero based
      rule -
      ruleIndex - for priority, zero based, if this is an HSSF rule. Unused for XSSF rules
      regions - could be read from formatting, but every call creates new objects in a new array. this allows calling it once per formatting instance, and re-using the array.
  • Method Details

    • getSheet

      public Sheet getSheet()
      Returns:
      sheet
    • getFormatting

      public ConditionalFormatting getFormatting()
      Returns:
      the formatting
    • getFormattingIndex

      public int getFormattingIndex()
      Returns:
      conditional formatting index
    • getNumberFormat

      public ExcelNumberFormat getNumberFormat()
      Returns:
      Excel number format string to apply to matching cells, or null to keep the cell default
    • getRule

      public ConditionalFormattingRule getRule()
      Returns:
      the rule
    • getRuleIndex

      public int getRuleIndex()
      Returns:
      rule index
    • getRegions

      public CellRangeAddress[] getRegions()
      Returns:
      the regions
    • getPriority

      public int getPriority()
      Returns:
      the priority
    • getFormula1

      public String getFormula1()
      Returns:
      the formula1
    • getFormula2

      public String getFormula2()
      Returns:
      the formula2
    • getText

      public String getText()
      Returns:
      condition text if any, or null
    • getOperator

      Returns:
      the operator
    • getType

      public ConditionType getType()
      Returns:
      the type
    • equals

      public boolean equals(Object obj)
      Defined as equal sheet name and formatting and rule indexes
      Overrides:
      equals in class Object
      See Also:
    • compareTo

      public int compareTo(EvaluationConditionalFormatRule o)
      Per Excel Help, XSSF rule priority is sheet-wide, not just within the owning ConditionalFormatting object. This can be seen by creating 4 rules applying to two different ranges and examining the XML.

      HSSF priority is based on definition/persistence order.

      Specified by:
      compareTo in interface Comparable<EvaluationConditionalFormatRule>
      Parameters:
      o -
      Returns:
      comparison based on sheet name, formatting index, and rule priority
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object