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 [, expression]*])

For POI internal use only

  • Method Details

    • 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 parse
      workbook - the parent workbook
      formulaType - the type of the formula
      sheetIndex - 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 - - 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(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 parse
      workbook - the parent workbook
      formulaType - the type of the formula
      sheetIndex - 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 text
      workbook - - the parent workbook
      rowIndex - - the 0-based cell's row index ( used to handle "#This Row" quantifiers )
      Returns:
      the area that being represented by the structured reference.