私は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();
3個の細胞は、124/0/0として表示:ここに私の最小限の作業ではない例です。
ご迷惑をおかけして申し訳ございません。
どうもありがとう! evaluateAll()はそのトリックを行いました。しかし、私は両方の提案された声明を残すつもりです。 – Renardo
追加の注意点:evaluateAll()は、行がすでにフラッシュされているという例外をスローすることがあります。この場合、evaluateFormulaCellEnum(cell)を使用できます。 – Renardo