Neuberechnung der Formeln in der Tabellenkalkulation mit Apache POI
Ich versuche, POI XSSF zu bewerten, einige Excel-Formeln.
Die Werte müssen nicht gespeichert werden, und ich kann berechnen viele Formeln, so dass ich versucht bin es zu tun, die alle in der gleichen Zelle.
Das problem ist, dass der Wert der Zelle scheint zu stecken in die erste Formel eingegeben, auch nachdem ich neu berechnen
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
XSSFCell formulaCell = row.createCell(6);
formulaCell.setCellFormula("Date(2011,10,6)");
CellValue cellValue = evaluator.evaluate(formulaCell);
System.out.println(cellValue.getNumberValue());
formulaCell.setCellFormula("Date(1911,3,4)");
cellValue = evaluator.evaluate(formulaCell);
System.out.println(cellValue.getNumberValue());
Diese Ausgänge 40822.0
40822.0 (excel-äquivalent 10/6/2011) beide Male statt neubewerten der neuen Formel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie die formulaEvaluator mehr als einmal, Sie müssen diese Zeile in zwischen verwendet, sonst verwendet er die gleichen Ergebnis jedes mal.
Den FormulaEvaluator caches Zelle berechneten Werte um die Verarbeitung zu beschleunigen. Wenn Sie ausführen Zelle, die updates nach dem erstellen der Gutachter, dann müssen Sie es sagen!
Sehen die FormulaEvaluator - Dokumentation für weitere details. Für den Fall, versuchen Sie Folgendes:
Können Sie verwenden Sie die folgenden Schritte aus, um Ihre Arbeit zu erledigen. Dies sind die beiden Lösungen aus, die Sie machen können Verwendung von einer Funktion. Es wertet die komplette Arbeitsmappe, also egal, welche Formel Sie verwenden, erhalten würden ausgewertet. Hoffe, das hilft.
1) evaluator.evaluateAll();
2) XSSFFormulaEvaluator.evaluateAllFormulaCells(wb);