Apache POI 3.17 (현재)을 사용 중입니다. HSSFCell.setFormula()를 사용하여 "A1 + 17"과 같은 수식을 삽입하면 작동합니다. 스트리밍 모드에서 동일한 작업을 수행 할 때 SXSSFCell.setFormula()를 사용하면 입력 행에 수식이 표시되지만 셀에 표시된 결과는 항상 0입니다.Apache POI는 어떻게 스트리밍 모드에서 수식을 사용할 수 있습니까?
셀을 사용해 보았습니다. NUMERIC W 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();
입력란에 수식이 올바르게 표시되지만 3 개의 셀은 124/0/0로 표시됩니다.
힌트를 보내 주시면 감사하겠습니다.
고마워요! evaluateAll()이 트릭을 수행했습니다. 그러나 나는 제안 된 진술을 모두 지킬 것이다. – Renardo
몇 가지 추가 설명 : 어떤 경우에는 evaluateAll()이 행이 이미 플러시되었다는 예외를 throw 할 수 있습니다. 이 경우 evaluateFormulaCellEnum (cell)을 사용할 수 있습니다. – Renardo