#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);
}
}