Пересчет формул в электронной таблице с помощью Apache POI

StackOverflow https://stackoverflow.com/questions/5836211

Вопрос

Я пытаюсь использовать POI XSSF для оценки некоторых формул Excel. Значения не нужно сохранять, и мне, возможно, придется вычислять много формул, поэтому я пытаюсь сделать все это в одной ячейке.

Проблема в том, что значение ячейки застревает в первой введенной формуле даже после того, как я пересчитал

родовое слово

Это выводит 40822.0 40822.0 (эквивалент в Excel от 06.10.2011) оба раза вместо повторной оценки по новой формуле.

Это было полезно?

Решение

Если вы используете формулу FormulaEvaluator более одного раза, вам понадобится эта строка между использованиями, иначе она будет использовать один и тот же результат каждый раз.

родовое слово

Другие советы

FormulaEvaluator кэширует вычисленные значения ячеек для ускорения обработки.Если вы выполняете обновления ячеек после создания оценщика, вам необходимо сообщить об этом!

Дополнительную информацию см. в документации FormulaEvaluator .Детали.В вашем случае попробуйте:

родовое слово

Для выполнения работы вы можете выполнить следующие действия.Это два решения, из которых вы можете использовать любую функцию.Он оценивает всю книгу, поэтому любая используемая вами формула будет оценена.Надеюсь, это поможет.

1) evalator.evaluateAll (); 2) XSSFFormulaEvaluator.evaluateAllFormulaCells (wb);

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top