#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:
wb.setForceFormulaRecalculation(true);
// replace "wb" with your HSSFWorkbook/XSSFWorkbook object
Комментарии:
1. Мне это не помогает — условное форматирование имеет неправильные значения. По крайней мере, если я открою документ в Libreoffice Calc