public final class OperandResolver
extends java.lang.Object
| Modifier and Type | Method and Description | 
|---|---|
| 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 | getElementFromArray(AreaEval ae,
                   EvaluationCell cell)Retrieves a single value from an area evaluation utilizing the 2D indices of the cell
 within its own area reference to index the value in the area evaluation. | 
| 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 | parseDateTime(java.lang.String pText) | 
| 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, | 
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 AreaRefnull or ErrorEval.EvaluationException - if srcCellRow or srcCellCol do not properly index into
  an AreaEval.  If the actual value retrieved is an ErrorEval, a corresponding
  EvaluationException is thrown.public static ValueEval getElementFromArray(AreaEval ae, EvaluationCell cell)
ae - area reference after evaluationcell - the source cell of the formula that contains its 2D indicesnull.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
EvaluationExceptionpublic static double coerceValueToDouble(ValueEval ev) throws EvaluationException
NumberEval.ZERO.ev - must be a NumberEval, StringEval, BoolEval or
 BlankEvalEvaluationException - 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 BlankEvalpublic 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.Double parseDateTime(java.lang.String pText)
public static java.lang.String coerceValueToString(ValueEval ve)
ve - must be a NumberEval, StringEval, BoolEval, or BlankEvalnullpublic static java.lang.Boolean coerceValueToBoolean(ValueEval ve, boolean stringsAreBlanks) throws EvaluationException
null to represent blank valuesEvaluationException - if ve is an ErrorEval, or if a string value cannot be convertedCopyright 2020 The Apache Software Foundation or its licensors, as applicable.