[alibaba/easyexcel]用父类class配置表头,传入子类对象集合,生成的excel错乱了

2024-05-11 868 views
4

触发Bug的代码

   @Data
    static  class Humen{
        @ExcelProperty("名字")
        private String name;
    }

    @Data
    static
    class Man extends Humen{
        @ExcelProperty("地址")
        private String addr;
    }

    public static void main(String[] args) throws FileNotFoundException {
        Man man = new Man();
        man.setAddr("武汉");
        man.setName("张三");
        ExcelWriter excelWriter = EasyExcel.write(new FileOutputStream(new File("/Users/yuangong/aaa.xlsx")), Humen.class).build();
        WriteSheet writeSheet = EasyExcel.writerSheet("test").build();
        excelWriter.write(Collections.singletonList(man), writeSheet);
        // 千万别忘记finish 会帮忙关闭流
        excelWriter.finish();
    }

提示的异常或者没有达到的效果 image

回答

3

版本

com.alibaba easyexcel 2.2.10
6

另外一个问题,子类属性ExcelIgnore注解覆盖了父类属性,生成的excel不应该有覆盖的属性。 代码如下


@Data
    static  class Humen{
        @ExcelProperty("名字")
        private String name;

        @ExcelProperty("电话")
        private String phone;
    }

    @Data
    static class Man extends Humen{
        @ExcelProperty("地址")
        private String addr;

        @ExcelIgnore
        private String phone;
    }

    public static void main(String[] args) throws FileNotFoundException {
        Man man = new Man();
        man.setAddr("武汉");
        man.setName("张三");
        man.setPhone("123456");
        ExcelWriter excelWriter = EasyExcel.write(new FileOutputStream(new File("/Users/yuangong/aaa.xlsx")), Man.class).build();
        WriteSheet writeSheet = EasyExcel.writerSheet("test").build();
        excelWriter.write(Collections.singletonList(man), writeSheet);
        // 千万别忘记finish 会帮忙关闭流
        excelWriter.finish();
    }

生成excel如图 image

3

@zhuangjiaju 大佬帮忙看下

4

已经在3.0.0-beta1 版本修复,beta版本会在一个月内升级成正式版。

8

试了下 3.0.0-beta1 版本,bug并未解决。 第一个问题现在结果是: image 第二个问题还在

8

@zhuangjiaju大佬帮忙看下