Top Description Inners Fields Constructors Methods
org.apache.poi.ss.formula

public final Class FormulaParser

extends Object
Class Inheritance
Annotations
@Internal
Imports
java.util.ArrayList, .List, .Locale, java.util.regex.Pattern, org.apache.logging.log4j.LogManager, .Logger, org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator, .HSSFWorkbook, org.apache.poi.ss.SpreadsheetVersion, org.apache.poi.ss.formula.constant.ErrorConstant, org.apache.poi.ss.formula.function.FunctionMetadata, .FunctionMetadataRegistry, org.apache.poi.ss.formula.ptg.AbstractFunctionPtg, .AddPtg, .Area3DPxg, .AreaPtg, .ArrayPtg, .AttrPtg, .BoolPtg, .ConcatPtg, .DividePtg, .EqualPtg, .ErrPtg, .FuncPtg, .FuncVarPtg, .GreaterEqualPtg, .GreaterThanPtg, .IntPtg, .IntersectionPtg, .LessEqualPtg, .LessThanPtg, .MemAreaPtg, .MemFuncPtg, .MissingArgPtg, .MultiplyPtg, .NamePtg, .NameXPtg, .NameXPxg, .NotEqualPtg, .NumberPtg, .OperandPtg, .OperationPtg, .ParenthesisPtg, .PercentPtg, .PowerPtg, .Ptg, .RangePtg, .RefPtg, .StringPtg, .SubtractPtg, .UnaryMinusPtg, .UnaryPlusPtg, .UnionPtg, .ValueOperatorPtg, org.apache.poi.ss.usermodel.FormulaError, .Name, .Table, .Workbook, org.apache.poi.ss.util.AreaReference, .CellReference, .CellReference.NameType, org.apache.poi.util.Internal, .StringUtil

This class parses a formula string into a List of tokens in RPN order. Inspired by "Lets Build a Compiler" by Jack Crenshaw BNF for the formula expression is :
<expression> ::= <term> [<addop> <term>]*
<term> ::= <factor>  [ <mulop> <factor> ]*
<factor> ::= <number> | (<expression>) | <cellRef> | <function>
<function> ::= <functionName> ([expression [, expression]*])

For POI internal use only

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static class
FormulaParser.SimpleRangePart

A1, $A1, A$1, $A$1, A, 1

Field Summary

Modifier and TypeField and Description
private final FormulaParsingWorkbook
private final int
private final String
private boolean
_inIntersection

Tracks whether the run of whitespace preceding "look" could be an intersection operator.

private int
_pointer

points at the next character to be read (after the look codepoint)

private ParseNode
private final int
private final int
private final SpreadsheetVersion
private static final Pattern
CELL_REF_PATTERN

Matches a zero or one letter-runs followed by zero or one digit-runs.

private static final char
private static final char
private static final Logger
private int
look

Lookahead unicode codepoint gets value '\0' when the input string is exhausted

private static final String
private static final String
private static final String
private static final String
private static final String
private static final char

Constructor Summary

AccessConstructor and Description
private
FormulaParser(String formula, FormulaParsingWorkbook book, int sheetIndex, int rowIndex)

Create the formula parser, with the string that is to be parsed against the supplied workbook.

Method Summary

Modifier and TypeMethod and Description
private ParseNode
additiveExpression()

Parse and Translate an Expression

private void
addName(String functionName)

Adds a name (named range or user defined function) to underlying workbook's names table

private ParseNode[]
Arguments()

get arguments to a function

private static ParseNode
private void
checkRowLengths(Object[][] values2d, int nColumns)

private static void
checkValidRangeOperand(String sideName, int
used to format a potential error message
currentParsePosition
,
ParseNode pn)

private ParseNode
private ParseNode
private static Double
convertArrayNumber(Ptg ptg, boolean isPositive)

private AreaReference
private ParseNode
private RuntimeException
expected(String s)

Report What Was Expected

private ParseNode
function(String
case preserved function name (as it was entered/appeared in the formula).
name
)

Note - Excel function names are 'case aware but not case sensitive'.

private String
private Ptg
private ParseNode

Returns:

Ptg a null is returned if we're in an IF formula, it needs extreme manipulation and is handled in this function
getFunction
(String
a NamePtg or NameXPtg or null
name
,
Ptg namePtg, ParseNode[] args)

Generates the variable function ptg for the formula.

private static Ptg
getNumberPtgFromString(String number1, String number2, String exponent)

Get a PTG for an integer from its string representation.

private Ptg[]
getRPNPtg(FormulaType formulaType)

private ParseNode
private static boolean
isAlpha(int c)

Recognize an Alpha Character

private static boolean
isArgumentDelimiter(int
unicode codepoint
ch
)

private static boolean
isDigit(int c)

Recognize a Decimal Digit

private static boolean
isUnquotedSheetNameChar(int
unicode codepoint
ch
)

very similar to SheetNameFormatter#isSpecialChar(char)

private boolean

Returns:

true if the specified name is a valid cell reference
isValidCellReference
(String str)

private static boolean

Returns:

true if the specified character may be used in a defined name
isValidDefinedNameChar
(int
unicode codepoint
ch
)

private static boolean

Returns:

false if sub-expression represented the specified ParseNode definitely cannot appear on either side of the range (':') operator
isValidRangeOperand
(ParseNode a)

private static boolean
isWhite(int c)

Recognize White Space

private void
match(int x)

Consumes the next input character if it is equal to the one specified otherwise throws an unchecked exception.

private static boolean
needsMemFunc(ParseNode root)

From OOO doc: "Whenever one operand of the reference subexpression is a function, a defined name, a 3D reference, or an external reference (and no error occurs), a tMemFunc token is used"

private void
nextChar()

Read New Character From Input Stream

private String
nextNum()

Get a Number

public static Ptg[]

Returns:

array of parsed tokens
parse
(String
the formula to parse
formula
,
FormulaParsingWorkbook
the parent workbook
workbook
,
FormulaType
the type of the formula
formulaType
,
int
the 0-based index of the sheet this formula belongs to. The sheet index is required to resolve sheet-level names. -1 means that the scope of the name will be ignored and the parser will match names only by name
sheetIndex
,
int
- the related cell's row index in 0-based form (-1 if the formula is not cell related) used to handle structured references that have the "#This Row" quantifier. Use rowIndex=-1 or parseStructuredReference(String, FormulaParsingWorkbook, int) if formula does not contain structured references.
rowIndex
)

Parse a formula into an array of tokens Side effect: creates name (Workbook#createName) if formula contains unrecognized names (names are likely UDFs)

public static Ptg[]

Returns:

array of parsed tokens
parse
(String
the formula to parse
formula
,
FormulaParsingWorkbook
the parent workbook
workbook
,
FormulaType
the type of the formula
formulaType
,
int
the 0-based index of the sheet this formula belongs to. The sheet index is required to resolve sheet-level names. -1 means that the scope of the name will be ignored and the parser will match names only by name
sheetIndex
)

Parse a formula into an array of tokens Side effect: creates name (Workbook#createName) if formula contains unrecognized names (names are likely UDFs)

private void
parse()

API call to execute the parsing of the formula

private ParseNode
private Object
private Object[]
private String
parseAsColumnQuantifier()

Tries to parse the next as column - can contain whitespace Caller should save pointer.

private String
private String
parseAsSpecialQuantifier()

Tries to parse the next as special quantifier Caller should save pointer.

private Boolean
private int
private ParseNode
parseNonRange(int savePointer)

Parses simple factors that are not primitive ranges or range components i.e. '!', ':'(and equiv '...') do not appear Examples

  my.named...range.
private Ptg
private ParseNode
parseRangeable()

Parses area refs (things which could be the operand of ':') and simple factors Examples

  A$1
  $A$1 :  $B1
  A1 .......
private ParseNode
private SheetIdentifier

Returns:

The sheet name as an identifier null if '!' is not found in the right place
parseSheetName
(boolean isSndPartOfQuotedRange)

Note - caller should reset _pointer upon null result

private SheetIdentifier
parseSheetRange(String bookname, NameIdentifier sheet1Name, boolean isSndPartOfQuotedRange)

If we have something that looks like [book]Sheet1: or Sheet1, see if it's actually a range eg Sheet1:Sheet2!

private ParseNode
parseSimpleFactor()

factors (without ^ or % )

private FormulaParser.SimpleRangePart

Returns:

null (and leaves _pointer unchanged if a proper range part does not parse out
parseSimpleRangePart
()

Parses out a potential LHS or RHS of a ':' intended to produce a plain AreaRef.

private String
public static Area3DPxg

Returns:

the area that being represented by the structured reference.
parseStructuredReference
(String
- The structured reference text
tableText
,
FormulaParsingWorkbook
- the parent workbook
workbook
,
int
- the 0-based cell's row index ( used to handle "#This Row" quantifiers )
rowIndex
)

Parse a structured reference.

private ParseNode

Returns:

Area Reference for the given table
parseStructuredReference
(String tableName)

Parses a structured reference, returns it as area reference.

private ParseNode
parseUnary(boolean isPlus)

private String
private ParseNode
private ParseNode
powerFactor()

Parse and Translate a Math Factor

private void
resetPointer(int ptr)

private void
skipWhite()

Skip Over Leading White Space

private ParseNode
Term()

Parse and Translate a Math Term

private ParseNode
private void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

_bookback to summary
private final FormulaParsingWorkbook _book
_formulaLengthback to summary
private final int _formulaLength
_formulaStringback to summary
private final String _formulaString
_inIntersectionback to summary
private boolean _inIntersection

Tracks whether the run of whitespace preceding "look" could be an intersection operator. See GetChar.

_pointerback to summary
private int _pointer

points at the next character to be read (after the look codepoint)

_rootNodeback to summary
private ParseNode _rootNode
_rowIndexback to summary
private final int _rowIndex
_sheetIndexback to summary
private final int _sheetIndex
_ssVersionback to summary
private final SpreadsheetVersion _ssVersion
CELL_REF_PATTERNback to summary
private static final Pattern CELL_REF_PATTERN

Matches a zero or one letter-runs followed by zero or one digit-runs. Either or both runs man optionally be prefixed with a single '$'. (copied+modified from CellReference.CELL_REF_PATTERN)

CRback to summary
private static final char CR
LFback to summary
private static final char LF
LOGGERback to summary
private static final Logger LOGGER
lookback to summary
private int look

Lookahead unicode codepoint gets value '\0' when the input string is exhausted

specAllback to summary
private static final String specAll
specDataback to summary
private static final String specData
specHeadersback to summary
private static final String specHeaders
specThisRowback to summary
private static final String specThisRow
specTotalsback to summary
private static final String specTotals
TABback to summary
private static final char TAB

Constructor Detail

FormulaParserback to summary
private FormulaParser(String formula, FormulaParsingWorkbook book, int sheetIndex, int rowIndex)

Create the formula parser, with the string that is to be parsed against the supplied workbook. A later call the parse() method to return ptg list in rpn order, then call the getRPNPtg() to retrieve the parse results. This class is recommended only for single threaded use. If you have a HSSFWorkbook, and not a Workbook, then use the convenience method on HSSFFormulaEvaluator

Method Detail

additiveExpressionback to summary
private ParseNode additiveExpression()

Parse and Translate an Expression

addNameback to summary
private void addName(String functionName)

Adds a name (named range or user defined function) to underlying workbook's names table

Argumentsback to summary
private ParseNode[] Arguments()

get arguments to a function

augmentWithMemPtgback to summary
private static ParseNode augmentWithMemPtg(ParseNode root)
checkRowLengthsback to summary
private void checkRowLengths(Object[][] values2d, int nColumns)
checkValidRangeOperandback to summary
private static void checkValidRangeOperand(String sideName, int currentParsePosition, ParseNode pn)
Parameters
currentParsePosition:int

used to format a potential error message

comparisonExpressionback to summary
private ParseNode comparisonExpression()
concatExpressionback to summary
private ParseNode concatExpression()
convertArrayNumberback to summary
private static Double convertArrayNumber(Ptg ptg, boolean isPositive)
createAreaRefback to summary
private AreaReference createAreaRef(FormulaParser.SimpleRangePart part1, FormulaParser.SimpleRangePart part2)
createAreaRefParseNodeback to summary
private ParseNode createAreaRefParseNode(SheetIdentifier sheetIden, FormulaParser.SimpleRangePart part1, FormulaParser.SimpleRangePart part2) throws FormulaParseException
Parameters
sheetIden:SheetIdentifier

may be null

part2:FormulaParser.SimpleRangePart

may be null

expectedback to summary
private RuntimeException expected(String s)

Report What Was Expected

functionback to summary
private ParseNode function(String name)

Note - Excel function names are 'case aware but not case sensitive'. This method may end up creating a defined name record in the workbook if the specified name is not an internal Excel function, and has not been encountered before. Side effect: creates workbook name if name is not recognized (name is probably a UDF)

Parameters
name:String

case preserved function name (as it was entered/appeared in the formula).

getBookNameback to summary
private String getBookName()
getComparisonTokenback to summary
private Ptg getComparisonToken()
getFunctionback to summary
private ParseNode getFunction(String name, Ptg namePtg, ParseNode[] args)

Generates the variable function ptg for the formula.

For IF Formulas, additional PTGs are added to the tokens

Parameters
name:String

a NamePtg or NameXPtg or null

Returns:ParseNode

Ptg a null is returned if we're in an IF formula, it needs extreme manipulation and is handled in this function

getNumberPtgFromStringback to summary
private static Ptg getNumberPtgFromString(String number1, String number2, String exponent)

Get a PTG for an integer from its string representation. return Int or Number Ptg based on size of input

getRPNPtgback to summary
private Ptg[] getRPNPtg(FormulaType formulaType)
intersectionExpressionback to summary
private ParseNode intersectionExpression()
isAlphaback to summary
private static boolean isAlpha(int c)

Recognize an Alpha Character

isArgumentDelimiterback to summary
private static boolean isArgumentDelimiter(int ch)
Parameters
ch:int

unicode codepoint

isDigitback to summary
private static boolean isDigit(int c)

Recognize a Decimal Digit

isUnquotedSheetNameCharback to summary
private static boolean isUnquotedSheetNameChar(int ch)

very similar to SheetNameFormatter#isSpecialChar(char)

Parameters
ch:int

unicode codepoint

isValidCellReferenceback to summary
private boolean isValidCellReference(String str)
Returns:boolean

true if the specified name is a valid cell reference

isValidDefinedNameCharback to summary
private static boolean isValidDefinedNameChar(int ch)
Parameters
ch:int

unicode codepoint

Returns:boolean

true if the specified character may be used in a defined name

isValidRangeOperandback to summary
private static boolean isValidRangeOperand(ParseNode a)
Returns:boolean

false if sub-expression represented the specified ParseNode definitely cannot appear on either side of the range (':') operator

isWhiteback to summary
private static boolean isWhite(int c)

Recognize White Space

matchback to summary
private void match(int x)

Consumes the next input character if it is equal to the one specified otherwise throws an unchecked exception. This method does not consume whitespace (before or after the matched character).

needsMemFuncback to summary
private static boolean needsMemFunc(ParseNode root)

From OOO doc: "Whenever one operand of the reference subexpression is a function, a defined name, a 3D reference, or an external reference (and no error occurs), a tMemFunc token is used"

nextCharback to summary
private void nextChar()

Read New Character From Input Stream

nextNumback to summary
private String nextNum()

Get a Number

parseback to summary
public static Ptg[] parse(String formula, FormulaParsingWorkbook workbook, FormulaType formulaType, int sheetIndex, int rowIndex)

Parse a formula into an array of tokens Side effect: creates name (Workbook#createName) if formula contains unrecognized names (names are likely UDFs)

Parameters
formula:String

the formula to parse

workbook:FormulaParsingWorkbook

the parent workbook

formulaType:FormulaType

the type of the formula

sheetIndex:int

the 0-based index of the sheet this formula belongs to. The sheet index is required to resolve sheet-level names. -1 means that the scope of the name will be ignored and the parser will match names only by name

rowIndex:int

- the related cell's row index in 0-based form (-1 if the formula is not cell related) used to handle structured references that have the "#This Row" quantifier. Use rowIndex=-1 or parseStructuredReference(String, FormulaParsingWorkbook, int) if formula does not contain structured references.

Returns:Ptg[]

array of parsed tokens

Exceptions
FormulaParseException:
if the formula has incorrect syntax or is otherwise invalid
parseback to summary
public static Ptg[] parse(String formula, FormulaParsingWorkbook workbook, FormulaType formulaType, int sheetIndex)

Parse a formula into an array of tokens Side effect: creates name (Workbook#createName) if formula contains unrecognized names (names are likely UDFs)

Parameters
formula:String

the formula to parse

workbook:FormulaParsingWorkbook

the parent workbook

formulaType:FormulaType

the type of the formula

sheetIndex:int

the 0-based index of the sheet this formula belongs to. The sheet index is required to resolve sheet-level names. -1 means that the scope of the name will be ignored and the parser will match names only by name

Returns:Ptg[]

array of parsed tokens

Exceptions
FormulaParseException:
if the formula has incorrect syntax or is otherwise invalid
parseback to summary
private void parse()

API call to execute the parsing of the formula

parseArrayback to summary
private ParseNode parseArray()
parseArrayItemback to summary
private Object parseArrayItem()
parseArrayRowback to summary
private Object[] parseArrayRow()
parseAsColumnQuantifierback to summary
private String parseAsColumnQuantifier()

Tries to parse the next as column - can contain whitespace Caller should save pointer.

parseAsNameback to summary
private String parseAsName()
parseAsSpecialQuantifierback to summary
private String parseAsSpecialQuantifier()

Tries to parse the next as special quantifier Caller should save pointer.

parseBooleanLiteralback to summary
private Boolean parseBooleanLiteral()
parseErrorLiteralback to summary
private int parseErrorLiteral()
parseNonRangeback to summary
private ParseNode parseNonRange(int savePointer)

Parses simple factors that are not primitive ranges or range components i.e. '!', ':'(and equiv '...') do not appear Examples

  my.named...range.
  foo.bar(123.456, "abc")
  123.456
  "abc"
  true
parseNumberback to summary
private Ptg parseNumber()
parseRangeableback to summary
private ParseNode parseRangeable()

Parses area refs (things which could be the operand of ':') and simple factors Examples

  A$1
  $A$1 :  $B1
  A1 .......    C2
  Sheet1 !$A1
  a..b!A1
  'my sheet'!A1
  .my.sheet!A1
  'my sheet':'my alt sheet'!A1
  .my.sheet1:.my.sheet2!$B$2
  my.named..range.
  'my sheet'!my.named.range
  .my.sheet!my.named.range
  foo.bar(123.456, "abc")
  123.456
  "abc"
  true
  [Foo.xls]!$A$1
  [Foo.xls]'my sheet'!$A$1
  [Foo.xls]!my.named.range
parseRangeExpressionback to summary
private ParseNode parseRangeExpression()
parseSheetNameback to summary
private SheetIdentifier parseSheetName(boolean isSndPartOfQuotedRange)

Note - caller should reset _pointer upon null result

Returns:SheetIdentifier

The sheet name as an identifier null if '!' is not found in the right place

parseSheetRangeback to summary
private SheetIdentifier parseSheetRange(String bookname, NameIdentifier sheet1Name, boolean isSndPartOfQuotedRange)

If we have something that looks like [book]Sheet1: or Sheet1, see if it's actually a range eg Sheet1:Sheet2!

parseSimpleFactorback to summary
private ParseNode parseSimpleFactor()

factors (without ^ or % )

parseSimpleRangePartback to summary
private FormulaParser.SimpleRangePart parseSimpleRangePart()

Parses out a potential LHS or RHS of a ':' intended to produce a plain AreaRef. Normally these are proper cell references but they could also be row or column refs like "$AC" or "10"

Returns:FormulaParser.SimpleRangePart

null (and leaves _pointer unchanged if a proper range part does not parse out

parseStringLiteralback to summary
private String parseStringLiteral()
parseStructuredReferenceback to summary
public static Area3DPxg parseStructuredReference(String tableText, FormulaParsingWorkbook workbook, int rowIndex)

Parse a structured reference. Converts the structured reference to the area that represent it.

Parameters
tableText:String

- The structured reference text

workbook:FormulaParsingWorkbook

- the parent workbook

rowIndex:int

- the 0-based cell's row index ( used to handle "#This Row" quantifiers )

Returns:Area3DPxg

the area that being represented by the structured reference.

parseStructuredReferenceback to summary
private ParseNode parseStructuredReference(String tableName)

Parses a structured reference, returns it as area reference. Examples:

Table1[]
Table1[col]
Table1[[#Totals],[col]]
Table1[#Totals]
Table1[#All]
Table1[#Data]
Table1[#Headers]
Table1[#Totals]
Table1[#This Row]
Table1[[#All],[col]]
Table1[[#Headers],[col]]
Table1[[#Totals],[col]]
Table1[[#All],[col1]:[col2]]
Table1[[#Data],[col1]:[col2]]
Table1[[#Headers],[col1]:[col2]]
Table1[[#Totals],[col1]:[col2]]
Table1[[#Headers],[#Data],[col2]]
Table1[[#This Row], [col1]]
Table1[ [col1]:[col2] ]
Returns:ParseNode

Area Reference for the given table

parseUnaryback to summary
private ParseNode parseUnary(boolean isPlus)
parseUnquotedIdentifierback to summary
private String parseUnquotedIdentifier()
percentFactorback to summary
private ParseNode percentFactor()
powerFactorback to summary
private ParseNode powerFactor()

Parse and Translate a Math Factor

resetPointerback to summary
private void resetPointer(int ptr)
skipWhiteback to summary
private void skipWhite()

Skip Over Leading White Space

Termback to summary
private ParseNode Term()

Parse and Translate a Math Term

unionExpressionback to summary
private ParseNode unionExpression()
validateNumArgsback to summary
private void validateNumArgs(int numArgs, FunctionMetadata fm)
org.apache.poi.ss.formula back to summary

private final Class FormulaParser.SimpleRangePart

extends Object
Class Inheritance

A1, $A1, A$1, $A$1, A, 1

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static enum

Field Summary

Modifier and TypeField and Description
private final String
private final FormulaParser.SimpleRangePart.Type

Constructor Summary

AccessConstructor and Description
public
SimpleRangePart(String rep, boolean hasLetters, boolean hasNumbers)

Method Summary

Modifier and TypeMethod and Description
public CellReference
public String
public boolean
public boolean
public boolean

Returns:

true if the two range parts can be combined in an AreaPtg ( Note - the explicit range operator (:) may still be valid when this method returns false )
isCompatibleForArea
(FormulaParser.SimpleRangePart part2)

public boolean
public boolean
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait

Field Detail

_repback to summary
private final String _rep
_typeback to summary
private final FormulaParser.SimpleRangePart.Type _type

Constructor Detail

SimpleRangePartback to summary
public SimpleRangePart(String rep, boolean hasLetters, boolean hasNumbers)

Method Detail

getCellReferenceback to summary
public CellReference getCellReference()
getRepback to summary
public String getRep()
isCellback to summary
public boolean isCell()
isColumnback to summary
public boolean isColumn()
isCompatibleForAreaback to summary
public boolean isCompatibleForArea(FormulaParser.SimpleRangePart part2)
Returns:boolean

true if the two range parts can be combined in an AreaPtg ( Note - the explicit range operator (:) may still be valid when this method returns false )

isRowback to summary
public boolean isRow()
isRowOrColumnback to summary
public boolean isRowOrColumn()
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object. Satisfying this method's contract implies a non-null result must be returned.

Returns:String

a string representation of the object

Annotations
@Override
org.apache.poi.ss.formula back to summary

private final Enum FormulaParser.SimpleRangePart.Type

extends Enum<FormulaParser.SimpleRangePart.Type>
Class Inheritance

Field Summary

Modifier and TypeField and Description
public static final FormulaParser.SimpleRangePart.Type
public static final FormulaParser.SimpleRangePart.Type
public static final FormulaParser.SimpleRangePart.Type

Constructor Summary

AccessConstructor and Description
private
Type()

Method Summary

Modifier and TypeMethod and Description
public static FormulaParser.SimpleRangePart.Type
get(boolean hasLetters, boolean hasDigits)

public static FormulaParser.SimpleRangePart.Type
public static FormulaParser.SimpleRangePart.Type[]
Inherited from java.lang.Enum:
clonecompareTodescribeConstableequalsfinalizegetDeclaringClasshashCodenameordinaltoStringvalueOf

Field Detail

CELLback to summary
public static final FormulaParser.SimpleRangePart.Type CELL
COLUMNback to summary
public static final FormulaParser.SimpleRangePart.Type COLUMN
ROWback to summary
public static final FormulaParser.SimpleRangePart.Type ROW

Constructor Detail

Typeback to summary
private Type()

Method Detail

getback to summary
public static FormulaParser.SimpleRangePart.Type get(boolean hasLetters, boolean hasDigits)
valueOfback to summary
public static FormulaParser.SimpleRangePart.Type valueOf(String name)
valuesback to summary
public static FormulaParser.SimpleRangePart.Type[] values()