利用easypoi实现excel导出功能 (有模板) (导出点检单,故障单等)

1.引入依赖

<dependency> 
	<groupId>cn.afterturn</groupId>
	<artifactId>easypoi-base</artifactId>
	 <version>3.2.0</version>
 </dependency> 
<dependency> 
	<groupId>cn.afterturn</groupId> 
	<artifactId>easypoi-web</artifactId> 
	<version>3.2.0</version> 
</dependency> 
<dependency>
	 <groupId>cn.afterturn</groupId> 
	<artifactId>easypoi-annotation</artifactId>
	 <version>3.2.0</version> 
</dependency>

2.<第一种方法:有模板>

模板为

创建工具类在easypoi基础上进行封装

public class ExportUtil {
    public static Workbook export(String canonicalPath, Map<String,Object> map){
        TemplateExportParams params=new TemplateExportParams(canonicalPath,true);
        return ExcelExportUtil.exportExcel(params,map);
    }

    public static void downExcel(HttpServletResponse response, String fileName, Workbook workbook) throws IOException {
        try {
            try {
                fileName= URLEncoder.encode(fileName+".xlsx","UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            response.setCharacterEncoding("UTF-8");
            response.setHeader("content-Type", "application/vnd.ms-excel");
            response.setHeader("Content-Disposition", "attachment;filename=" +fileName);
            response.addHeader("Pargam", "no-cache");
            response.addHeader("Cache-Control", "no-cache");

            ServletOutputStream os = response.getOutputStream();
            workbook.write(os);
            os.flush();
            os.close();
        }catch (Exception e){
            e.printStackTrace();
        }

    }
}

写接口 前端传过来多个id然后找到对应数据并进行处理之后再封装进map中(这里默认文件名需要设置成英文否则会乱码)

@NoToken
    @ApiOperation("导出点检单")
    @GetMapping("/excel")
    public void excelInspection(InspectionExcelDTO dto, HttpServletRequest request, HttpServletResponse response) throws IOException {

        try {
            String templateUrl="template/inspection.xlsx";
            //获取导出数据
            List<InspectionExcelVO> retList = inspectionService.getExportList(dto);
            Map<String,Object> data=new HashMap<>();
            data.put("mapList",retList);
            Workbook workbook = ExportUtil.export(templateUrl, data);

            String filename="inspection";
            ExportUtil.downExcel(response,filename,workbook);
        }catch (Exception ex){
            log.info("导出失败");
            ex.printStackTrace();
        }


    }

利用postman测试

经测试没有问题(有模板这种有个好处是可以导出为多个sheet,不用多次去导出)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

确实够拉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值