|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.poi.ss.formula.eval.OperandResolver
public final class OperandResolver
Provides functionality for evaluating arguments to functions and operators.
Method Summary | |
---|---|
static ValueEval |
chooseSingleElementFromArea(AreaEval ae,
int srcCellRow,
int srcCellCol)
Implements (some perhaps not well known) Excel functionality to select a single cell from an area depending on the coordinates of the calling cell. |
static java.lang.Boolean |
coerceValueToBoolean(ValueEval ve,
boolean stringsAreBlanks)
|
static double |
coerceValueToDouble(ValueEval ev)
Applies some conversion rules if the supplied value is not already a number. |
static int |
coerceValueToInt(ValueEval ev)
Applies some conversion rules if the supplied value is not already an integer. Value is first coerced to a double ( See coerceValueToDouble() ). |
static java.lang.String |
coerceValueToString(ValueEval ve)
|
static ValueEval |
getSingleValue(ValueEval arg,
int srcCellRow,
int srcCellCol)
Retrieves a single value from a variety of different argument types according to standard Excel rules. |
static java.lang.Double |
parseDouble(java.lang.String pText)
Converts a string to a double using standard rules that Excel would use. Tolerates leading and trailing spaces, |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method Detail |
---|
public static ValueEval getSingleValue(ValueEval arg, int srcCellRow, int srcCellCol) throws EvaluationException
arg
- the evaluated argument as passed to the function or operator.srcCellRow
- used when arg is a single column AreaRefsrcCellCol
- used when arg is a single row AreaRef
null
or ErrorEval.
EvaluationException(#VALUE!)
- if srcCellRow or srcCellCol do not properly index into
an AreaEval. If the actual value retrieved is an ErrorEval, a corresponding
EvaluationException is thrown.
EvaluationException
public static ValueEval chooseSingleElementFromArea(AreaEval ae, int srcCellRow, int srcCellCol) throws EvaluationException
A | B | C | D | |
---|---|---|---|---|
1 | 15 | 20 | 25 | |
2 | 200 | |||
3 | 300 | |||
3 | 400 |
A | B | C | D | |
---|---|---|---|---|
1 | 15 | 20 | 25 | |
2 | 1215 | 1220 | #VALUE! | 200 |
3 | 1315 | 1320 | #VALUE! | 300 |
4 | #VALUE! | #VALUE! | #VALUE! | 400 |
The same concept is extended to references across sheets, such that even multi-row, multi-column areas can be useful.
Of course with carefully (or carelessly) chosen parameters, cyclic references can occur and
hence this method can throw a 'circular reference' EvaluationException. Note that
this method does not attempt to detect cycles. Every cell in the specified Area ae
has already been evaluated prior to this method call. Any cell (or cells) part of
ae that would incur a cyclic reference error if selected by this method, will
already have the value
null
. Never
ErrorEval.
EvaluationException
- if there is a problem with indexing into the area, or if the
evaluated cell has an error.
public static int coerceValueToInt(ValueEval ev) throws EvaluationException
0
.
Excel typically converts doubles to integers by truncating toward negative infinity.
The equivalent java code is:
return (int)Math.floor(d);
not:
return (int)d; // wrong - rounds toward zero
EvaluationException
public static double coerceValueToDouble(ValueEval ev) throws EvaluationException
NumberEval.ZERO
.
ev
- must be a NumberEval
, StringEval
, BoolEval
or
BlankEval
EvaluationException(#VALUE!)
- only if a StringEval is supplied and cannot be parsed
as a double (See parseDouble() for allowable formats).
java.lang.RuntimeException
- if the supplied parameter is not NumberEval
,
StringEval
, BoolEval
or BlankEval
EvaluationException
public static java.lang.Double parseDouble(java.lang.String pText)
Doesn't support currency prefixes, commas, percentage signs or arithmetic operations strings.
Some examples:
" 123 " -> 123.0
".123" -> 0.123
"1E4" -> 1000
"-123" -> -123.0
These not supported yet:
" $ 1,000.00 " -> 1000.0
"$1.25E4" -> 12500.0
"5**2" -> 500
"250%" -> 2.5
null
if the specified text cannot be parsed as a numberpublic static java.lang.String coerceValueToString(ValueEval ve)
ve
- must be a NumberEval, StringEval, BoolEval, or BlankEval
null
public static java.lang.Boolean coerceValueToBoolean(ValueEval ve, boolean stringsAreBlanks) throws EvaluationException
null
to represent blank values
EvaluationException
- if ve is an ErrorEval, or if a string value cannot be converted
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |