Package 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
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description 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)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)static Area3DPxg
parseStructuredReference(java.lang.String tableText, FormulaParsingWorkbook workbook, int rowIndex)
Parse a structured reference.
-
-
-
Method Detail
-
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 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(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.
-
-