下载后Apache POI初始计算公式

Apache POI initial calculation of formula after download

我使用 Apache POI 创建了一个 Excel 文件。有两张不同的床单。 Sheet 1 是一个带有一些公式的模板。在 Sheet 2 中,我想获取 Sheet 1 中一个单元格的值。这是从 Sheet 1:[=12 中获取值的 Excel-公式=]

=IF(Sheet1!D7="";"";Sheet1!D7)

但是当我用

在 D7 中放入一些文本时
  cell = worksheet1.getRow(6).getCell(3);
  cell.setCellValue("SomeText");

它不会接管 Sheet 2 的值。如果我单击 D7 并使用回车,Sheet2 将采用该值,但我希望 apache poi 执行此操作。

我该如何处理?

您必须在最终输出之前评估公式。

使用它来计算所有公式。

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

使用它来评估特定单元格的公式

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

然后在流中写入文件