easypoi Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

在使用easypoi一对多导出功能时,报了这个错误。映射实体类代码如下:

@Data
public class PartnerDto{

    @ExcelIgnore
    private Long id;

    @Excel(name = "昵称",needMerge = true)
    private String name;

    @Excel(name = "邮箱",needMerge = true)
    private String email;
    
    @ExcelCollection(name = "关联公司")
    private List<String> companyList;

}

由于源码中有这么段代码

在这里插入图片描述
第144行的判断。导致PartnerDto类中字段companyList没有被easypoi所获取。导致 List list = new ArrayList(); 中的list 是个size为0的集合。
在这里插入图片描述
所有后面创建cell时会报异常。
在这里插入图片描述
正确的做法如下:

@Data
public class PartnerDto{

    @ExcelIgnore
    private Long id;

    @Excel(name = "昵称",needMerge = true)
    private String name;

    @Excel(name = "邮箱",needMerge = true)
    private String email;
    
    @ExcelCollection(name = "关联公司")
    private List<InnerCompany> companyList;


    public static class InnerCompany {

        public InnerCompany() {
        }

        public InnerCompany(String company) {
            this.company = company;
        }

        @Excel(name = "公司")
        private String company;


        public String getCompany() {
            return company;
        }

        public void setCompany(String company) {
            this.company = company;
        }
        
    }

}

再进行excel导出时就不会报错了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值