public abstract class BaseFormulaEvaluator extends java.lang.Object implements FormulaEvaluator, WorkbookEvaluatorProvider
Modifier and Type | Field and Description |
---|---|
protected WorkbookEvaluator |
_bookEvaluator |
Modifier | Constructor and Description |
---|---|
protected |
BaseFormulaEvaluator(WorkbookEvaluator bookEvaluator) |
Modifier and Type | Method and Description |
---|---|
WorkbookEvaluator |
_getWorkbookEvaluator()
Provide the underlying WorkbookEvaluator
|
void |
clearAllCachedResultValues()
Should be called whenever there are major changes (e.g.
|
protected abstract RichTextString |
createRichTextString(java.lang.String str) |
CellValue |
evaluate(Cell cell)
If cell contains a formula, the formula is evaluated and returned,
else the CellValue simply copies the appropriate cell value from
the cell and also its cell type.
|
static void |
evaluateAllFormulaCells(Workbook wb)
Loops over all cells in all sheets of the supplied
workbook.
|
protected static void |
evaluateAllFormulaCells(Workbook wb,
FormulaEvaluator evaluator) |
CellType |
evaluateFormulaCell(Cell cell)
If cell contains formula, it evaluates the formula,
and saves the result of the formula.
|
protected abstract CellValue |
evaluateFormulaCellValue(Cell cell) |
Cell |
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.
|
protected EvaluationWorkbook |
getEvaluationWorkbook()
internal use
|
protected void |
setCellType(Cell cell,
CellType cellType)
Override if a different variation is needed, e.g.
|
protected void |
setCellType(Cell cell,
CellValue cv)
Set the cell type based on the computed cell type as
part of a formula evaluation.
|
protected void |
setCellValue(Cell cell,
CellValue cv) |
void |
setDebugEvaluationOutputForNextEval(boolean value)
Perform detailed output of formula evaluation for next evaluation only?
Is for developer use only (also developers using POI for their XLS files).
|
void |
setIgnoreMissingWorkbooks(boolean ignore)
Whether to ignore missing references to external workbooks and
use cached formula results in the main workbook instead.
|
static void |
setupEnvironment(java.lang.String[] workbookNames,
BaseFormulaEvaluator[] evaluators)
Coordinates several formula evaluators together so that formulas that involve external
references can be evaluated.
|
void |
setupReferencedWorkbooks(java.util.Map<java.lang.String,FormulaEvaluator> evaluators)
Sets up the Formula Evaluator to be able to reference and resolve
links to other workbooks, eg [Test.xls]Sheet1!A1.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
evaluateAll, notifyDeleteCell, notifySetFormula, notifyUpdateCell
protected final WorkbookEvaluator _bookEvaluator
protected BaseFormulaEvaluator(WorkbookEvaluator bookEvaluator)
public static void setupEnvironment(java.lang.String[] workbookNames, BaseFormulaEvaluator[] evaluators)
workbookNames
- the simple file names used to identify the workbooks in formulas
with external links (for example "MyData.xls" as used in a formula "[MyData.xls]Sheet1!A1")evaluators
- all evaluators for the full set of workbooks required by the formulas.public void setupReferencedWorkbooks(java.util.Map<java.lang.String,FormulaEvaluator> evaluators)
FormulaEvaluator
For a workbook referenced as [Test.xls]Sheet1!A1, you should supply a map containing the key Test.xls (no square brackets), and an open FormulaEvaluator onto that Workbook.
setupReferencedWorkbooks
in interface FormulaEvaluator
evaluators
- Map of workbook names (no square brackets) to an evaluator on that workbookpublic WorkbookEvaluator _getWorkbookEvaluator()
WorkbookEvaluatorProvider
_getWorkbookEvaluator
in interface WorkbookEvaluatorProvider
protected EvaluationWorkbook getEvaluationWorkbook()
public void clearAllCachedResultValues()
clearAllCachedResultValues
in interface FormulaEvaluator
public CellValue evaluate(Cell cell)
evaluate
in interface FormulaEvaluator
cell
- may be null
signifying that the cell is not present (or blank)null
if the supplied cell is null
or blankpublic Cell evaluateInCell(Cell cell)
Cell
is 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, use
evaluateFormulaCell(Cell)
}evaluateInCell
in interface FormulaEvaluator
cell
- The Cell
to evaluate and modify.cell
that was passed in, allowing for chained callspublic CellType evaluateFormulaCell(Cell cell)
CellType evaluatedCellType = evaluator.evaluateFormulaCell(cell);Be aware that your cell will hold both the formula, and the result. If you want the cell replaced with the result of the formula, use
evaluate(org.apache.poi.ss.usermodel.Cell)
}evaluateFormulaCell
in interface FormulaEvaluator
cell
- The cell to evaluateCellType._NONE
rather than throwing an exception.protected void setCellType(Cell cell, CellValue cv)
cell
- The Cell to populatecv
- The CellValue to read the result type fromprotected void setCellType(Cell cell, CellType cellType)
cell
- The Cell to populatecellType
- The wanted type for this Cellprotected abstract RichTextString createRichTextString(java.lang.String str)
public static void evaluateAllFormulaCells(Workbook wb)
protected static void evaluateAllFormulaCells(Workbook wb, FormulaEvaluator evaluator)
public void setIgnoreMissingWorkbooks(boolean ignore)
In some cases external workbooks referenced by formulas in the main workbook are not available. With this method you can control how POI handles such missing references:
CollaboratingWorkbooksEnvironment.WorkbookNotFoundException
if an external reference cannot be resolvedsetIgnoreMissingWorkbooks
in interface FormulaEvaluator
ignore
- whether to ignore missing references to external workbookspublic void setDebugEvaluationOutputForNextEval(boolean value)
setDebugEvaluationOutputForNextEval
in interface FormulaEvaluator
value
- whether to perform detailed outputCopyright 2021 The Apache Software Foundation or its licensors, as applicable.