org.apache.poi.ss.formula
Class FormulaParser
java.lang.Object
org.apache.poi.ss.formula.FormulaParser
@Internal
public final class FormulaParser
- extends java.lang.Object
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 [, expression]*])
For POI internal use only
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
parse
public static Ptg[] parse(java.lang.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
- the formula to parseworkbook
- the parent workbookformulaType
- the type of the formulasheetIndex
- 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 namerowIndex
- - 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:
- array of parsed tokens
- Throws:
FormulaParseException
- if the formula has incorrect syntax or is otherwise invalid
parse
public static Ptg[] parse(java.lang.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
- the formula to parseworkbook
- the parent workbookformulaType
- the type of the formulasheetIndex
- 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:
- array of parsed tokens
- Throws:
FormulaParseException
- if the formula has incorrect syntax or is otherwise invalid
parseStructuredReference
public static Area3DPxg parseStructuredReference(java.lang.String tableText,
FormulaParsingWorkbook workbook,
int rowIndex)
- Parse a structured reference. Converts the structured
reference to the area that represent it.
- Parameters:
tableText
- - The structured reference textworkbook
- - the parent workbookrowIndex
- - the 0-based cell's row index ( used to handle "#This Row" quantifiers )
- Returns:
- the area that being represented by the structured reference.