Java и Excel — обновление формул

#java #apache-poi

#java #apache-poi

Вопрос:

Я использую Apache POI для сохранения данных в файл Excel. Основные данные сохраняются нормально, но мне нужно также использовать формулы.

Он добавляет формулу, но она не оценивается, пока я не обновлю ячейку (щелчок и нажатие enter)

Код, который я использую для создания ячеек. Удален код, который не имеет отношения к делу

 public void writeExcel(ClassManager cm) throws FileNotFoundException, IOException {
    setupRows();
    workbook.setForceFormulaRecalculation(true);

    FileOutputStream outputStream = new FileOutputStream(fileLocation);
    workbook.write(outputStream);
    workbook.close();
}

public void setupRows() {
    setupRow15();
}

public void setupRow15() {
    int start = 2;
    Row row = sheet.createRow(16);
    
    // Create 1st Cell
    Cell cell = row.createCell(0);
    cell.setCellValue("templateId = ");
        
    for (int i = 0; i < classes.size(); i  ) {
        // Get class
        Classes c = classes.get(i);
        
        // Create cell
        cell = row.createCell(start);
        
        // Set contents
        cell.setCellFormula("IF(C3="","",CONCAT($A17,$B17,C"   (start   1)   ",$B17,$A$16))");
        
        start  ;
    }
}
 

Это приводит к формуле

Комментарии:

1. Вы просматривали оценку формулы ? (Примечание: является ли это последнее предложение в вашем вопросе неполным?)

Ответ №1:

Решил проблему, запустив после установки всех формул

 FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
    for (Row r : sheet) {
        for (Cell c : r) {
            evaluator.evaluateFormulaCell(c);
        }
    }