一、需求
需求是需要实现一个导出excel文件的功能,但是提供的模板较为复杂,并且大量单元格附带公式。
ps:这只是需要导出的一小部分,带颜色的单元格都是含有公式的,而且需要导出的是一个xlsx中有3个类似的sheet。
二、思路
既然提供模板文件已经很复杂化了,所以不打算用代码进行生成了(写起来会很麻烦),第三方也没有找到能满足我需求的,所以想直接读取现有的模板,然后将需要的值一个个填入进去,最后刷新sheet表的公式(这个很重要,不然只会显示填入了值,其他带公式的单元格不会自动计算数值)。
三、代码
直接上代码吧,其实也就是用了poi的基本操作
public void exportCalculation(Long id, HttpServletRequest request, HttpServletResponse response) {
InputStream is = null;
try {
//根据id查询详细信息
LandTaxCalculationEntity landTaxCalculation = this.baseMapper.selectOneLandTaxCalculation(id);
//获取模板
is = this.getClass().getClassLoader().getResourceAsStream("doc/土增税测算表导出模板.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(is);
//设置第一张sheet表
//setSheetOne(landTaxCalculation, workbook);
//设置第二张sheet表(first表)
setFirstAndExpectSheet(landTaxCalculation, workbook,1);
//设置第三张sheet表(Expect表)
setFirstAndExpectSheet(landTaxCalculation, workbook,2);
//设置文件名称
String table = "土增税测算表";
//设置返回header
setResponseHeader2007(table, request, response);
OutputStream out = response.getOutputStream();
workbook.write(out);
out.close();
workbook.close();
} catch (IOException