我使用的是Apache POI 3.17(当前版本)。当我使用HSSFCell.setFormula()插入一个像“A1 + 17”这样的公式时,它可以工作。当我在流模式下使用SXSSFCell.setFormula()时,输入行中出现公式(带有前导“=”),但单元格中的显示结果始终为0.Apache POI如何在流模式下使用公式?
我试过用单元格类型NUMERIC和FORMULA。这里是我最小的不工作的例子:
final SXSSFWorkbook wb = new SXSSFWorkbook();
final SXSSFSheet sheet = wb.createSheet("Test-S");
final SXSSFRow row = sheet.createRow(0);
final SXSSFCell cell1 = row.createCell(0);
cell1.setCellType(CellType.NUMERIC);
cell1.setCellValue(124);
final SXSSFCell formulaCell1 = row.createCell(1);
formulaCell1.setCellType(CellType.FORMULA);
formulaCell1.setCellFormula("A1 + 17");
final SXSSFCell formulaCell2 = row.createCell(2);
formulaCell2.setCellType(CellType.NUMERIC);
formulaCell2.setCellFormula("A1+18");
FileOutputStream os = new FileOutputStream("/tmp/test-s.xlsx");
wb.write(os);
wb.close();
os.close();
三个单元格显示为124/0/0,虽然在输入行中公式显示正确。
任何提示表示赞赏。
非常感谢! evaluateAll()做了诀窍。但是我要保留两份提议的陈述。 – Renardo
附加说明:在某些情况下,evaluateAll()可能会抛出异常,表示行已经被刷新。在这种情况下,可以使用evaluateFormulaCellEnum(cell)。 – Renardo