https://bz.apache.org/bugzilla/show_bug.cgi?id=69650
Bug ID: 69650
Summary: Throw Exception java.lang.IllegalStateException: value
changed in this methos
ss.formula.EvaluationCache.getPlainValueEntry
Product: POI
Version: unspecified
Hardware: PC
Status: NEW
Severity: normal
Priority: P2
Component: XSSF
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
My Excel file having
A1 -> Cell Value ( 1)
A2 -> Cell Value (2)
A3 -> Cell Value (3)
A4 -> =SUM(A1:A3)
I have create my logic like it reads the Value of Row A1 to A4 and also do set
cell Value like
Loop i to 1 to 4
Read Ai
Set Ai
When Loop executed at A4 then it throws exception
Caused by: java.lang.IllegalStateException: value changed
at
org.apache.poi.ss.formula.EvaluationCache.getPlainValueEntry(EvaluationCache.java:135)
~[?:?]
at
org.apache.poi.ss.formula.EvaluationTracker.acceptPlainValueDependency(EvaluationTracker.java:143)
~[?:?]
at
org.apache.poi.ss.formula.WorkbookEvaluator.evaluateAny(WorkbookEvaluator.java:242)
~[?:?]
at
org.apache.poi.ss.formula.WorkbookEvaluator.evaluateReference(WorkbookEvaluator.java:791)
~[?:?]
at
org.apache.poi.ss.formula.SheetRefEvaluator.getEvalForCell(SheetRefEvaluator.java:48)
~[?:?]
at
org.apache.poi.ss.formula.SheetRangeEvaluator.getEvalForCell(SheetRangeEvaluator.java:77)
~[?:?]
at
org.apache.poi.ss.formula.LazyAreaEval.getRelativeValue(LazyAreaEval.java:54)
~[?:?]
at
org.apache.poi.ss.formula.eval.AreaEvalBase.getValue(AreaEvalBase.java:143)
~[?:?]
at
org.apache.poi.ss.formula.functions.MultiOperandNumericFunction.collectValues(MultiOperandNumericFunction.java:149)
~[?:?]
at
org.apache.poi.ss.formula.functions.MultiOperandNumericFunction.getNumberArray(MultiOperandNumericFunction.java:118)
~[?:?]
at
org.apache.poi.ss.formula.functions.MultiOperandNumericFunction.evaluate(MultiOperandNumericFunction.java:81)
~[?:?]
at
org.apache.poi.ss.formula.OperationEvaluatorFactory.evaluate(OperationEvaluatorFactory.java:133)
~[?:?]
at
org.apache.poi.ss.formula.WorkbookEvaluator.evaluateFormula(WorkbookEvaluator.java:537)
~[?:?]
at
org.apache.poi.ss.formula.WorkbookEvaluator.evaluateAny(WorkbookEvaluator.java:264)
~[?:?]
at
org.apache.poi.ss.formula.WorkbookEvaluator.evaluate(WorkbookEvaluator.java:205)
~[?:?]
at
org.apache.poi.xssf.usermodel.BaseXSSFFormulaEvaluator.evaluateFormulaCellValue(BaseXSSFFormulaEvaluator.java:61)
~[?:?]
at
org.apache.poi.ss.formula.BaseFormulaEvaluator.evaluateFormulaCell(BaseFormulaEvaluator.java:184)
~[?:?]
at
org.apache.poi.ss.usermodel.DataFormatter.formatCellValue(DataFormatter.java:1120)
~[?:?]
As I was Searching , then in POI document mentioned that
For performance reasons, this class keeps a cache of all previously calculated
intermediate cell values. Be sure to call clearAllCachedResultValues() if any
workbook cells are changed between calls to evaluate~ methods on this class.
So Every After Set cell I have call clearAllCachedResultValues() ,
Can you please suggest weather this is right solution or not in such case ?
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]