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.
Copyright 2017 The Apache Software Foundation or
its licensors, as applicable.