Package org.apache.poi.xssf.streaming
Class SXSSFFormulaEvaluator
java.lang.Object
org.apache.poi.ss.formula.BaseFormulaEvaluator
org.apache.poi.xssf.usermodel.BaseXSSFFormulaEvaluator
org.apache.poi.xssf.streaming.SXSSFFormulaEvaluator
- All Implemented Interfaces:
WorkbookEvaluatorProvider,FormulaEvaluator
Streaming-specific Formula Evaluator, which is able to
lookup cells within the current Window.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic class -
Field Summary
Fields inherited from class org.apache.poi.ss.formula.BaseFormulaEvaluator
_bookEvaluator -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic SXSSFFormulaEvaluatorcreate(SXSSFWorkbook workbook, IStabilityClassifier stabilityClassifier, UDFFinder udfFinder) voidLoops over rows and cells, evaluating formula cells there.static voidevaluateAllFormulaCells(SXSSFWorkbook wb, boolean skipOutOfWindow) For active worksheets only, will loop over rows and cells, evaluating formula cells there.evaluateInCell(Cell cell) If cell contains formula, it evaluates the formula, and puts the formula result back into the cell, in place of the old formula.voidnotifyDeleteCell(Cell cell) Should be called to tell the cell value cache that the specified cell has just become a formula cell, or the formula text has changedvoidnotifySetFormula(Cell cell) Should be called to tell the cell value cache that the specified (value or formula) cell has changed.voidnotifyUpdateCell(Cell cell) Should be called to tell the cell value cache that the specified (value or formula) cell has changed.protected EvaluationCelltoEvaluationCell(Cell cell) Turns a SXSSFCell into a SXSSFEvaluationCellMethods inherited from class org.apache.poi.xssf.usermodel.BaseXSSFFormulaEvaluator
createRichTextString, evaluateFormulaCellValue, setCellTypeMethods inherited from class org.apache.poi.ss.formula.BaseFormulaEvaluator
_getWorkbookEvaluator, clearAllCachedResultValues, evaluate, evaluateAllFormulaCells, evaluateAllFormulaCells, evaluateFormulaCell, evaluateFormulaCellEnum, getEvaluationWorkbook, setCellType, setCellValue, setDebugEvaluationOutputForNextEval, setIgnoreMissingWorkbooks, setupEnvironment, setupReferencedWorkbooks
-
Constructor Details
-
SXSSFFormulaEvaluator
-
-
Method Details
-
create
public static SXSSFFormulaEvaluator create(SXSSFWorkbook workbook, IStabilityClassifier stabilityClassifier, UDFFinder udfFinder) - Parameters:
stabilityClassifier- used to optimise caching performance. Passnullfor the (conservative) assumption that any cell may have its definition changed after evaluation begins.udfFinder- passnullfor default (AnalysisToolPak only)
-
notifySetFormula
Description copied from interface:FormulaEvaluatorShould be called to tell the cell value cache that the specified (value or formula) cell has changed. Failure to call this method after changing cell values will cause incorrect behaviour of the evaluate~ methods of this class -
notifyDeleteCell
Description copied from interface:FormulaEvaluatorShould be called to tell the cell value cache that the specified cell has just become a formula cell, or the formula text has changed -
notifyUpdateCell
Description copied from interface:FormulaEvaluatorShould be called to tell the cell value cache that the specified (value or formula) cell has changed. Failure to call this method after changing cell values will cause incorrect behaviour of the evaluate~ methods of this class -
toEvaluationCell
Turns a SXSSFCell into a SXSSFEvaluationCell- Specified by:
toEvaluationCellin classBaseXSSFFormulaEvaluator
-
evaluateInCell
Description copied from class:BaseFormulaEvaluatorIf cell contains formula, it evaluates the formula, and puts the formula result back into the cell, in place of the old formula. Else if cell does not contain formula, this method leaves the cell unchanged. Note that the same instance ofCellis returned to allow chained calls like:int evaluatedCellType = evaluator.evaluateInCell(cell).getCellType();
Be aware that your cell value will be changed to hold the result of the formula. If you simply want the formula value computed for you, useBaseFormulaEvaluator.evaluateFormulaCell(Cell)}- Specified by:
evaluateInCellin interfaceFormulaEvaluator- Overrides:
evaluateInCellin classBaseFormulaEvaluator- Parameters:
cell- TheCellto evaluate and modify.- Returns:
- the
cellthat was passed in, allowing for chained calls
-
evaluateAllFormulaCells
For active worksheets only, will loop over rows and cells, evaluating formula cells there. If formula cells are outside the window for that sheet, it can either skip them silently, or give an exception -
evaluateAll
public void evaluateAll()Loops over rows and cells, evaluating formula cells there. If any sheets are inactive, or any cells outside of the window, will give an Exception. For SXSSF, you generally don't want to use this method, instead evaluate your formulas as you go before they leave the window.
-