使用EasyExcel导出表单表头-单层表头和多层表头

一、导入pom

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

相关版本信息可去maven库查询,链接如下:https://mvnrepository.com/artifact/com.alibaba/easyexcel

二、单层表头导出

2.1 固定表头

如果已知导出的表头基本不变,则可以使用以下方法生成对应的表头

定义实体类

   @Data
    public class MyData {
        @ExcelProperty("用户名称")
        private String userName;
        @ExcelProperty("用户性别")
        private String userSex;
        @ExcelProperty("用户年龄")
        private Integer userAge;
    }

调用方法生成excel文件

//生成路径
 public static final String PATH = "/Users/lilun/Downloads/";

    @Test
    public void myData() {
        // 文件名称
        String fileName = PATH + "myData" + System.currentTimeMillis() + ".xlsx";
        // 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
        EasyExcel.write(fileName, MyData.class)
                //从第0行开始,默认为0
//                .relativeHeadRowIndex(0)
                //sheet名称
                .sheet("模板")
                .doWrite(null);
    }

生成的文件如下图示
在这里插入图片描述

2.2 动态表头

如果表头是动态的,即每次的表头可能都会发生变化,则可以用以下的方法生成文件

   @Test
    public void myData2() {
        // 写法1
        String fileName = PATH + "myData2" + System.currentTimeMillis() + ".xlsx";
        EasyExcel.write(fileName)
                //文件的表头
                .head(genHead())
                //从第0行开始,默认为0
//                .relativeHeadRowIndex(0)
                //sheet名称
                .sheet("模板")
                .doWrite(null);
    }


    private List<List<String>> genHead() {
        //表头list的生成,实际的表头信息可以从数据库或者缓存等处动态读取
        List<List<String>> list = new ArrayList<List<String>>();
        List<String> head0 = new ArrayList<String>();
        head0.add("名称");
        List<String> head1 = new ArrayList<String>();
        head1.add("年龄");
        List<String> head2 = new ArrayList<String>();
        head2.add("性别");
        list.add(head0);
        list.add(head1);
        list.add(head2);
        return list;
    }

生成的文件如下图示
在这里插入图片描述

三、多层表头导出

3.1 固定表头

定义实体类

@Data
    public class MyComplexData {
        @ExcelProperty({"用户", "名称"})
        private String name;
        @ExcelProperty({"用户", "年龄"})
        private Integer age;
        @ExcelProperty({"用户", "性别"})
        private String sex;

        @ExcelProperty({"地址", "国家"})
        private String country;
        @ExcelProperty({"地址", "省份"})
        private String province;

        @ExcelProperty( "手机号")
        private String phone;
    }
@Test
    public void MyComplexData() {
        // 文件名
        String fileName = PATH + "MyComplexData" + System.currentTimeMillis() + ".xlsx";
        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
        EasyExcel.write(fileName, MyComplexData.class)
                //sheet名称
                .sheet("模板")
                .doWrite(null);
    }

文件生成如下图示
在这里插入图片描述

3.2 动态表头

 private List<List<String>> gemComplexHead() {
        //表头list的生成,实际的表头信息可以从数据库或者缓存等处动态读取
        List<List<String>> list = new ArrayList<List<String>>();
        List<String> head0 = new ArrayList<String>();
        //第一层
        head0.add("用户");
        //第二层
        head0.add("名称");
        List<String> head1 = new ArrayList<String>();
        //第一层
        head1.add("用户");
        //第二层
        head1.add("年龄");
        List<String> head2 = new ArrayList<String>();
        //第一层
        head2.add("用户");
        //第二层
        head2.add("性别");

        list.add(head0);
        list.add(head1);
        list.add(head2);


        List<String> head3 = new ArrayList<String>();
        head3.add("手机号");
        List<String> head4 = new ArrayList<String>();
        //第一层
        head4.add("地址");
        //第二层
        head4.add("国家");
        List<String> head5 = new ArrayList<String>();
        //第一层
        head5.add("地址");
        //第二层
        head5.add("省份");

        list.add(head3);
        list.add(head4);
        list.add(head5);
        return list;
    }

    @Test
    public void MyComplexData2() {
        // 文件名
        String fileName = PATH + "MyComplexData2" + System.currentTimeMillis() + ".xlsx";
        EasyExcel.write(fileName)
                //文件的表头
                .head(gemComplexHead())
                .sheet("模板")
                .doWrite(null);
    }

生成的文件如下图示

在这里插入图片描述

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值