J'utilise Apache POI 3.17 (actuel). Lorsque j'utilise HSSFCell.setFormula() pour insérer une formule comme "A1 + 17" cela fonctionne. Quand je fais la même chose en mode streaming, en utilisant SXSSFCell.setFormula() la formule apparaît (avec un "=") dans la ligne d'entrée mais le résultat affiché dans la cellule est toujours 0.Comment Apache POI peut-il utiliser des formules en mode streaming?
J'ai essayé avec la cellule types NUMERIC et FORMULA. Voici mon exemple minimal ne fonctionne pas:
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();
Les trois cellules présentent comme 124/0/0, bien que dans la ligne d'entrée des formules sont affichées correctement.
Tous les indices sont appréciés.
Merci beaucoup! evaluateAll() a fait l'affaire. Mais je vais garder les deux déclarations proposées. – Renardo
Quelques remarques supplémentaires: Dans certains cas, evaluateAll() peut lancer une exception, indiquant qu'une ligne a déjà été vidée. Dans ce cas, evaluateFormulaCellEnum (cellule) peut être utilisé. – Renardo