Проблема с типом ячейки при оценке формулы в SXSSFWorkbook - PullRequest
0 голосов
/ 22 января 2019

Я столкнулся со следующей проблемой: Всякий раз, когда я пытаюсь оценить формулу SXSSFCell внутри SXSSFWorkbook, он вычисляет ее должным образом, НО, если для CellType установлено значение «String», конец, таким образом, удаляет формулу, которая ранее была сохранена в нем.

Я попробовал классический способ:

FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluateAll();

Специфичная для ячейки:

FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluateFormulaCell(cell);

И даже так:

FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
CellValue cv = evaluator.evaluate(cell);
cell.setCellValue(new XSSFRichTextString(cv.getStringValue()));

Но каждый раз для CellType моего объекта ячейки устанавливается значение String.

С другой стороны, у меня нет проблем при использовании XSSFCell в XSSFWorkbook. Запуск одного из приведенных выше примеров работает отлично. Формула рассчитывается, а CellType по-прежнему "Формула" И когда я читаю исходный код, оба SXSSFFormulaEvaluator и XSSFFormulaEvaluator расширяют BaseFormulaEvaluator, и эта функция evaluateFormulaCell говорит: «Ячейка остается ячейкой формулы» (и это не относится к любым SXSSFCell)

После небольшого копания я обнаружил, что метод setCellValue отличается между классом SXSSFCell и XSSFCell, и именно поэтому это происходит.

Мне кажется, что это ошибка, которая никогда не была устранена, но если у кого-то есть идея, как решить эту проблему, это было бы замечательно.

...