There is no method to set the "stopIfTrue" attribute in ConditionalFormattingRule Solution: CHANGES IN org.apache.poi.ss.usermodel.ConditionalFormattingRule ADD: /** * Sets the "stopIfTrue" attribute */ public void setStopIfTrue(boolean bln); /** * Unsets the "stopIfTrue" attribute */ public void unsetStopIfTrue(); CHANGES IN org.apache.poi.xssf.usermodel.XSSFConditionalFormattingRule ADD: /** * Sets the "stopIfTrue" attribute */ @Override public void setStopIfTrue(boolean bln) { _cfRule.setStopIfTrue(bln); } /** * Unsets the "stopIfTrue" attribute */ @Override public void unsetStopIfTrue() { _cfRule.unsetStopIfTrue(); } CHANGES IN org.apache.poi.hssf.usermodel.HSSFConditionalFormattingRule ADD: /** * Sets the "stopIfTrue" attribute */ @Override public void setStopIfTrue(boolean bln) { throw new UnsupportedOperationException("Not supported yet."); } /** * Unsets the "stopIfTrue" attribute */ @Override public void unsetStopIfTrue() { throw new UnsupportedOperationException("Not supported yet."); }
Created attachment 30325 [details] Simple patch for the changes proposed in this bug A patch adding the changes mentioned in this bug together with some simple unit tests to at least cover the new code.
Patch looks good to apply One thing that might be good is to create a file in excel conditional formatting but not this rule, save, then enable stop if true, save, and then diff the BiffViewer output to try to see what record(s) get set/changed. Hopefully that will show what (little...) is needed to implement for hssf too!
@ Nick: the system suggests this bug needs additional information before it can be dealt with. But I presume this would already add value for the users of the XSSF format. Could it be applied without the solution for HSSF? Or would that violate some symmetricity requirement? I would very much like to have this for XFFS.
As additional information: HSSF format does not even support this as per POI code and via-via per "Microsoft Excel documentation": /** * Always true for HSSF files, per Microsoft Excel documentation * @see org.apache.poi.ss.usermodel.ConditionalFormattingRule#getStopIfTrue() */ public boolean getStopIfTrue() { return true; }
Turn back to NEW as I think this could be applied. (maybe it needs a polish due to new locations of stuff but that should be simple and I volunteer to do so.)