https://bz.apache.org/bugzilla/show_bug.cgi?id=68714
Bug ID: 68714
Summary: Operator BETWEEN should work both ways
Product: POI
Version: 5.2.3-FINAL
Hardware: PC
OS: Mac OS X 10.1
Status: NEW
Severity: normal
Priority: P2
Component: SS Common
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
Created attachment 39610
--> https://bz.apache.org/bugzilla/attachment.cgi?id=39610&action=edit
Reproducer with conditional formatting rules
With Excel, the conditional formatting the rule "compare cell between 2 values"
will evaluate the formula both ways:
- val1 < cell.value < val2
- val2 < cell.value < val1
There is no assumption what is the lowest value and the highest one.
With Apache POI, the evaluation is done one way which suppose that the lowest
value is the first one and the highest one is the second:
- return cellValue.compareTo(v1) >= 0 && cellValue.compareTo(v2) <= 0;
https://github.com/apache/poi/blob/ae2f0945cd2ab37260e46ab46c54b8f68a131aea/poi/src/main/java/org/apache/poi/ss/formula/OperatorEnum.java#L92
As a consequence, each time the lowest value is passed as a second value, the
expression is always false.
Code should look like:
return (cellValue.compareTo(v1) >= 0 && cellValue.compareTo(v2) <= 0 ) ||
((cellValue.compareTo(v1) <= 0 && cellValue.compareTo(v2) >= 0
)) ;
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]