Package org.apache.poi.ss.formula
Class FormulaParser
- java.lang.Object
-
- org.apache.poi.ss.formula.FormulaParser
-
@Internal public final class FormulaParser extends 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> ::= <term> [<addop> <term>]* <term> ::= <factor> [ <mulop> <factor> ]* <factor> ::= <number> | (<expression>) | <cellRef> | <function> <function> ::= <functionName> ([expression [, expression]*])
For POI internal use only
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description 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)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)static Ptg[]
parse(String formula, FormulaParsingWorkbook workbook, FormulaType formulaType, int sheetIndex, int rowIndex, int colIndex)
static Area3DPxg
parseStructuredReference(String tableText, FormulaParsingWorkbook workbook, int rowIndex)
Parse a structured reference.
-
-
-
Method Detail
-
parse
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
- 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 orparseStructuredReference(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(String formula, FormulaParsingWorkbook workbook, FormulaType formulaType, int sheetIndex, int rowIndex, int colIndex)
-
parse
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
- 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(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.
-
-