1.添加依赖
<!--easyexcel 注意要把poi的全部依赖注释掉,不然会产生冲突-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.0-beta1</version>
</dependency>
2.对需要导入的模板进行输入流的读取
我这里是相对路径
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("templates\\运营数据报表模板.xlsx");
3. 对模板的输出
ExcelWriter write = EasyExcel.write(response.getOutputStream()).withTemplate(inputStream).build();
WriteSheet sheet = EasyExcel.writerSheet().build();
完整实例代码
//获取当天
LocalDateTime endTime = LocalDateTime.now();
//前30天
LocalDateTime startTime = endTime.minusDays(30).toLocalDate().atStartOfDay();
//30天的总数据
BusinessDataVO businessDataVO = worksPaceDataService.businessDatas(startTime, endTime);
log.info("businessDataVO:{}", businessDataVO);
ArrayList<ExportVO> exportVOS = new ArrayList<>();
//30天每天的数据
while (startTime.isBefore(endTime)) {
LocalDateTime dayEnd = startTime.plusHours(24).minusSeconds(1);
BusinessDataVO dayVo = worksPaceDataService.businessDatas(startTime, dayEnd);
ExportVO exportVO = new ExportVO();
BeanUtils.copyProperties(dayVo, exportVO);
exportVO.setStartTime(startTime.toLocalDate().toString());
exportVOS.add(exportVO);
startTime = startTime.plusDays(1);
}
try {
//获取导出的模板
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("templates\\运营数据报表模板.xlsx");
ExcelWriter write = EasyExcel.write(response.getOutputStream()).withTemplate(inputStream).build();
WriteSheet sheet = EasyExcel.writerSheet().build();
//封装BusinessDataVO为map
HashMap<String, String> map = new HashMap<>();
map.put("turnover", businessDataVO.getTurnover().toString());
map.put("validOrderCount", businessDataVO.getValidOrderCount().toString());
map.put("orderCompletionRate", businessDataVO.getOrderCompletionRate().toString());
map.put("unitPrice", businessDataVO.getUnitPrice().toString());
map.put("newUsers", businessDataVO.getNewUsers().toString());
//导出
log.info(exportVOS.toString());
write.fill(exportVOS, sheet);
log.info(map.toString());
write.fill(map, sheet);
write.finish();
} catch (Exception e) {
log.error(e.getMessage());
throw new BaseException("文件导出异常");
}
excel表格
记住了,这里的大括号相当于一个占位符,里面的字段就是你往map添加的key或者实体类里的变量