最近用EasyExcel做了一个导出excel模板文件的功能,
后来业务要求,在个别猎头字段加上统计,还能随着筛选增删实时计算,于是我就整理了一下EasyExcel导出模板数据所有的大大小小的坑:
1、模板导出,数据正确,但是公式字段显示公式本身
解决:一般原因为单元格格式为文本,将其设置成“常规”即可,
2、公式正常,但是只计算,或者不机选所在列的总值
解决:一般原因为,列的部分或者全部单元格为文本,同上,将整列设置为“常规”即可。
3、excel模板文件填充数据以后导出,公式单元格默认为0,但是鼠标选择单元格,在上面编辑栏回车,又可以算出结果
解决:需要代码设置公式生效:excelWriter.writeContext().writeWorkbookHolder().getWorkbook().setForceFormulaRecalculation(true); 这句代码,设置forceFormulaRecalculation 为true,
藏的有点深,
InputStream inputStream = new FileInputStream(file);
log.info("------------读取到模板文件inputStream-"+inputStream);
excelWriter = EasyExcel.write(outputStream).withTemplate(inputStream).build();
//写入模板文件的第一个sheet 索引0
WriteSheet writeSheet = EasyExcel.writerSheet().build();
//使Excel中的公式生效,进行运算
excelWriter.writeContext().writeWorkbookHolder().getWorkbook().setForceFormulaRecalculation(true);