[alibaba/easyexcel]继承父类后,导入导出时会遇到问题

2024-05-24 380 views
3

异常代码

   这里写你的代码

异常提示 请提供完整的异常提示,记住是全部异常! 建议描述 1.导出时,导出model如果继承了父类,会将父类的属性也导出到excel中,怎么设置不导出。父类文件是jar包中的class文件; 2.导入时,也用同样的model,报错Positioned Update not supported,应该跟父类属性有关。 这两个问题有方式可以解决吗,还是说导入导出model都必须重新再建新的model?

回答

8

请使用@ExcelIgnoreUnannotated修饰model类,然后在需要导出的属性上添加@ExcelProperty

7

之前没发现这个注解可以这么用,现在问题1解决了。但是问题2还是存在,我用的是jfinal这种框架自动生成的model,网上说是序列化的问题

5

之前没发现这个注解可以这么用,现在问题1解决了。但是问题2还是存在,我用的是jfinal这种框架自动生成的model,网上说是序列化的问题

理论上出现这个错误的原因是因为你某些父类属性是Dao之类的getter、setter,所以被调用了额外的方法才会导致,easyExcel的底层依赖beanMap,beanMap依赖于getter、setter,bean被转换的时候getter之类的就会被调用,所以,从结果上来看,只能自定义DTO来构建这些属性,试试使用BeanUtils.copyProperties(src, target, ignoreProperties)

3

嗯好的,谢谢

6

你好,使用了@ExcelIgnoreUnannotated修饰model类后,导入excel时debug跟踪,发现easyexcel构建导入类的时候还是把父类的属性取出来了

4

你好,使用了@ExcelIgnoreUnannotated修饰model类后,导入excel时debug跟踪,发现easyexcel构建导入类的时候还是把父类的属性取出来了

@ExcelIgnoreUnannotated只能解决你导出多余属性的问题,无法解决父类的异常调用getter的问题

异常调用只能新构建model

5

好的