Easy Excel动态组合导出

Easy Excel动态组合导出,第1张

Easy Excel动态组合导出

提示:为了回应开发同学,特写此文,希望能帮助到大家,谢谢大家支持和信任

文章目录
  • 前言
  • 一、上菜
    • 1.添加依赖
    • 2.核心编码
    • 3.导出字段属性介绍


前言

Easy Excel 真的很好用,今天就为大家介绍如何使用它做动态导出。


链接: Easy Excel官网入口.

一、上菜 1.添加依赖
	
      com.alibaba
      easyexcel
      2.2.5
      
        
          poi
          org.apache.poi
        
      
    
2.核心编码
@ApiOperation(httpMethod = "POST", value = "下载路线规划报表", notes = "下载路线规划报表", produces = MediaType.APPLICATION_JSON_VALUE)
    @PostMapping(value = "/download/route-report")
    public void downloadRouteReport(@RequestBody @Valid RouteReportDto reportDto, HttpServletResponse response) throws IOException {
        String sheetName = "路线规划报表";
        try {
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            response.setCharacterEncoding("utf-8");
            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
            String fileName = URLEncoder.encode("路线规划报表", "UTF-8").replaceAll("\+", "%20");
            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
            response.setHeader("filename", fileName + ".xlsx");
            RouteReportDto dto = getFormatDate(reportDto);
            
            // 查询数据
            List list = routeReportService.getRouteReportInfoExcel(dto);
            List excelList = new ArrayList<>();
            // 数据格式包装
            statusExcel(excelList,list);
            // 这里需要设置不关闭流
            EasyExcel.write(response.getOutputStream(), RouteReportExcel.class).autoCloseStream(Boolean.FALSE).sheet(sheetName)
                        .doWrite(excelList0);

        } catch (Exception e) {
            // 重置response
            log.error("导出异常!!!",e);
            response.reset();
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
            Map map = new HashMap<>();
            map.put("status", "failure");
            map.put("message", "下载文件失败" + e.getMessage());
            response.getWriter().println(JSON.toJSONString(map));
        }

    }
3.导出字段属性介绍
// RouteReportExcel 

 @ExcelProperty  在每个需要导出的字段上面加上导出时需要展示的名称即可。
 直接整一个组合型,可以灵活使用,不用拘泥于一种格式


@Data
@ApiModel(value = "报表数据")
public class RouteReportExcel implements Serializable {

    @ExcelProperty({"时间", "自然月"})
    @ApiModelProperty(value = "年月")
    private String planMonth;

    @ExcelProperty({"组织", "行销公司"})
    @ApiModelProperty(value = "公司")
    private String company;

    @ExcelProperty({"组织", "营业部"})
    @ApiModelProperty(value = "营业部")
    private String dept;

    @ExcelProperty({"组织", "营业所"})
    @ApiModelProperty(value = "营业所")
    private String orgName;

    @ExcelProperty({"组织", "业代类型"})
    @ApiModelProperty(value = "业代类型")
    private String salesTypeName;

    @ExcelProperty({"组织", "业代人员"})
    @ApiModelProperty(value = "业代人员")
    private String empName;

    @ExcelProperty({"规划进度", "方案完成"})
    @ApiModelProperty(value = "方案完成")
    private String planDownloadStatus;

    @ExcelProperty({"规划进度", "方案上传SFT"})
    @ApiModelProperty(value = "方案上传SFT")
    private String planUploadStatus;
}
    

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5684029.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存