EasyExcel读取数据失败的常见问题
easyexcel
快速、简洁、解决大文件内存溢出的java处理Excel工具
项目地址:https://gitcode.com/gh_mirrors/ea/easyexcel
免费下载资源
·
高频问题
最好不使用 lombok 的@Data、@Accessors注解
1、我的部分字段为什么没法读取或者写入?
- 读写反射对象用到了Cglib,所以成员变量必须符合驼峰规范,请确认是否符合驼峰规范
- 在3.0.0-beta1 兼容了部分非驼峰,但是还是不建议使用非驼峰字段
- 使用了lombok的@Accessors(chain = true) ,无法被Cglib读取
- 建议使用@Builder来替换@Accessors(chain = true)
- 出现 NoSuchMethodException , ClassNotFoundException, NoClassDefFoundError等异常 一般是版本兼容出问题了,
参照:
TIP:如果项目中没有使用过poi,且jdk版本在8-17之间,直接使用最新版本,别犹豫。
- 3+版本的的easyexcel,使用poi 5+版本时,需要自己引入poi 5+版本的包,且手动排除:poi-ooxml-schemas,例如:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.0</version>
<exclusions>
<exclusion>
<artifactId>poi-ooxml-schemas</artifactId>
<groupId>org.apache.poi</groupId>
</exclusion>
</exclusions>
</dependency>
2、只要部分字段去匹配excel(excel写入内容匹配不上等)
easyexcel默认是全部实体字段都会参与读写,不管你是否加了@ExcelProperty注解
- 如果您的版本低于2.1.6,建升级到以上版本
- 升级了还有,在类的最上面加入@ExcelIgnoreUnannotated注解,加入这个注解后只有加了@ExcelProperty才会参与读写。
3、我在本地可以,发布到线上环境怎么不可以了?
例如异常:NullPointerException at sun.awt.FontConfiguration.getVersion ,Could not initialize class sun.awt.X11FontManage
大概率是缺少字体库导致,2个方案:
- 安装字体(推荐)
看下服务器是否安装了字体,jdk8字体需要自己安装请安装字体:dejavu-sans-fonts 和 fontconfig 在dockerfile中增加字体安装命令: RUN yum install dejavu-sans-fonts fontconfig -y
普通的线上环境直接运行: yum install dejavu-sans-fonts fontconfig -y - 开启内存处理模式(不推荐,1W数据以内可以考虑,大了很容易OOM)
EasyExcel
.write(fileName, DemoData.class)
// 核心这个配置 开始内存处理模式
.inMemory(Boolean.TRUE)
.sheet("模板")
.doWrite(data());
GitHub 加速计划 / ea / easyexcel
14
5
下载
快速、简洁、解决大文件内存溢出的java处理Excel工具
最近提交(Master分支:5 个月前 )
c42183df
Bugfix 5 个月前
efa7dff6 * 重新加回 `commons-io`
5 个月前
更多推荐
已为社区贡献3条内容
所有评论(0)