From 82244c3aae068b803263eb33392f6a02f4153819 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 14 Feb 2017 17:49:13 +0000 Subject: [PATCH] Expose Priority from newer-style HSSF CF rules git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1782995 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/hssf/record/CFRule12Record.java | 7 +++++++ .../hssf/usermodel/HSSFConditionalFormattingRule.java | 8 ++++++-- .../poi/ss/usermodel/ConditionalFormattingRule.java | 9 ++++++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/java/org/apache/poi/hssf/record/CFRule12Record.java b/src/java/org/apache/poi/hssf/record/CFRule12Record.java index fd4cafa76d..d9d9793e9b 100644 --- a/src/java/org/apache/poi/hssf/record/CFRule12Record.java +++ b/src/java/org/apache/poi/hssf/record/CFRule12Record.java @@ -331,6 +331,13 @@ public final class CFRule12Record extends CFRuleBase implements FutureRecord, Cl formula_scale = Formula.create(ptgs); } + public int getPriority() { + return priority; + } + public void setPriority(int priority) { + this.priority = priority; + } + public short getSid() { return sid; } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java b/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java index 83a5b2569f..aa46315091 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java @@ -60,11 +60,15 @@ public final class HSSFConditionalFormattingRule implements ConditionalFormattin } /** - * we don't know priority for these, other than definition/model order, which appears to be what Excel uses. + * 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. * @see org.apache.poi.ss.usermodel.ConditionalFormattingRule#getPriority() */ public int getPriority() { - return 0; + CFRule12Record rule12 = getCFRule12Record(false); + if (rule12 == null) return 0; + return rule12.getPriority(); } /** diff --git a/src/java/org/apache/poi/ss/usermodel/ConditionalFormattingRule.java b/src/java/org/apache/poi/ss/usermodel/ConditionalFormattingRule.java index 54961ca6d0..da3896bd05 100644 --- a/src/java/org/apache/poi/ss/usermodel/ConditionalFormattingRule.java +++ b/src/java/org/apache/poi/ss/usermodel/ConditionalFormattingRule.java @@ -147,10 +147,13 @@ public interface ConditionalFormattingRule { String getFormula2(); /** - * HSSF just returns 0, XSSF uses the value stored in the model if present, - * otherwise uses 0. + * The priority of the rule, if defined, otherwise 0. *

- * If priority is 0, just use definition order, as that's how HSSF rules are evaluated. + * If priority is 0, just use definition order, as that's how older HSSF rules + * are evaluated. + *

+ * For XSSF, this should always be set. For HSSF, only newer style rules + * have this set, older ones will return 0. *

* If a rule is created but not yet added to a sheet, this value may not be valid. * @return rule priority -- 2.39.5