Используя Apache POI HSSF, как я могу обновить все ячейки формулы одновременно?

#java #apache-poi

#java #apache-poi

Вопрос:

Я заполняю ячейки файла Excel с помощью Apache POI, и в документе много ячеек формулы. Однако их значения не обновляются, когда я открываю документ в Excel.

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

Ответ №1:

Конечно. Обновление всех формул в рабочей книге, возможно, в любом случае, является более типичным вариантом использования.

Если вы используете HSSF, вызовите evaluatorAllFormulaCells:

  HSSFFormulaEvaluator.evaluateAllFormulaCells(hssfWorkbook)
  

Если вы используете XSSF, вызовите evaluatorAllFormulaCells:

  XSSFFormulaEvaluator.evaluateAllFormulaCells(xssfWorkbook)
  

Более подробная информация доступна на веб-сайте poi

Комментарии:

1. Что, если в моей формуле есть какие-то неподдерживаемые функции, например DB или SLN? Есть ли какой-либо флаг, который я могу установить, чтобы указать Excel пересчитать все ячейки формулы после открытия файла?

Ответ №2:

Комментарии:

1. Мне это не помогает — условное форматирование имеет неправильные значения. По крайней мере, если я открою документ в Libreoffice Calc