问题描述
我们在业务场景中会遇到一些关于报表的开发,如果指定导出的模板并且其中还包含了一些公式的运算,那我们就可能会遇到公式的Cell运算失效的问题。
解析
我使用的是easypoi,是一家公司自己开发的excel导出工具。看到网上呼声高,使用中确实也遇到了一些问题,才明白网上为什么呼声高。easypoi是基于poi进行增强的Excel读写工具。需要注意的是我导出的报表就只有一个Sheet。
代码
// 渲染导出
Workbook workbook = ExcelExportUtil.exportExcel(params, map);
//公式处理
XSSFFormulaEvaluator hssfFormulaEvaluator = new XSSFFormulaEvaluator((XSSFWorkbook) workbook);
Sheet sheet = workbook.getSheetAt(0);
sheet.forEach(x -> {
if (x.getRowNum() != sheet.getLastRowNum() ){
for (int i = 0; i < x.getLastCellNum(); i++) {
Cell cell = x.getCell(i);
if (cell.getCellType() == CellType.FORMULA){
cell.setCellFormula(cell.toString());
hssfFormulaEvaluator.evaluateFormulaCell(cell);
}
}
}
});
workbook.setForceFormulaRecalculation(true);