Pergunta

Eu estou tentando usar POI XSSF para avaliar algumas fórmulas do Excel. Os valores não têm de ser salvo, e eu pode ter que calcular muitas fórmulas, então eu estou tentando fazer tudo na mesma célula.

O problema é que o valor da célula parece ficar preso na primeira fórmula entrou mesmo depois de eu recalcular

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());

Isso gera 40.822,0 40822,0 (excel equivalente de 10/6/2011) as duas vezes, em vez de reavaliação para a nova fórmula.

Foi útil?

Solução

Se você usar o formulaEvaluator mais de uma vez, você precisa esta linha entre usos, ou então ele usa o mesmo resultado cada vez.

formulaEvaluator.clearAllCachedResultValues()
scroll top