SpringBoot 整合EasyExcel 快速导出功能

前言

在正常开发中经常会遇到需要 文件导出成Excel格式的需求, 本篇主要讲的是运用阿里巴巴EasyExcel ,其实市面上的Excel导出框架,大体上都是在 org.apache.poi的基础上进行封装。

依赖

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>3.0.1</version>
        </dependency>

用例

    @ApiOperation(value = "导出")
    @RequestMapping(value = "/getSpecialExcel", method = RequestMethod.POST)
    public void download(HttpServletResponse response) throws IOException {
        // String PATH = "C:\\Users\\hanshang\\Downloads\\工作文件\\EasyTest.xlsx";

        // 数据库查询
        List<DataEntity> DataEntities = DataService.list(new QueryWrapper<DataEntity>();

        if (DataEntities.size() <= 0) return ;
      	
      	// 动态表头获取方式,用于设置表头和数据
        List<List<String>> listHead = new ArrayList<List<String>>();
        List<List<String>> DataList = new ArrayList<List<String>>();

      	// 模拟动态表头,从集合中获取
        DataEntities.stream().forEach( temp ->{
            List<String> Head_Temp = new ArrayList();
            Head_Temp.add(temp.getName());

            listHead.add(Head_Temp);
        });

        // 设置表具体内容,也是按顺序派发
        DataEntities.stream().forEach(temp ->{
            List<String> DataTemp = new ArrayList();
            DataTemp.add(temp.getKey());
            
            DataList.add(DataTemp);
        });

        // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
        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*=" + fileName + ".xlsx");

        EasyExcel.write(response.getOutputStream()).head(listHead).sheet("模板").doWrite(DataList);
//        EasyExcel.write(response.getOutputStream(), DataEntity.class).sheet(模板).doWrite(data());
    }
	
	// 省去 get set 构造
	@Data
	class DataEntity{
		private String name;
		private String key;
	}
	

添加链接描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值