当前位置: 首页 > news >正文

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());

相关文章:

  • 3-6月面经总结,200多页真题笔记和详解(含核心考点及6家大厂)
  • Zemax操作39--POP的案例(空间滤波器)
  • ES6模块化使用_前端培训
  • Git工具的使用
  • 电商订单全流程可观测最佳实践
  • 诸子百家的十二家学派
  • 活动回顾 | Mini XMan线上快闪活动圆满结束!
  • 头条小程序模板全行业合集,头条小程序制作平台分享
  • 基于关联规则的网络信息安全风险度量分析模型
  • Chapter 5 Deep Learning
  • Windows与网络基础-8-windows基本命令-文本操作
  • 元宇宙办公室APP功能系统软件源码开发
  • Kafka监控与指标解析-UnderReplicatedPartitions
  • css:移动端实现1px、0.5px的细线
  • 解决方案|电力行业应如何应对数字化转型危机
  • ES6指北【2】—— 箭头函数
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • JavaScript学习总结——原型
  • Material Design
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Sass Day-01
  • STAR法则
  • SwizzleMethod 黑魔法
  • vue中实现单选
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 浅谈web中前端模板引擎的使用
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • ​520就是要宠粉,你的心头书我买单
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Java数据结构)ArrayList
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (力扣题库)跳跃游戏II(c++)
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (四)Android布局类型(线性布局LinearLayout)
  • (四)模仿学习-完成后台管理页面查询
  • (万字长文)Spring的核心知识尽揽其中
  • (一)插入排序
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • .NET Framework .NET Core与 .NET 的区别
  • .Net MVC + EF搭建学生管理系统
  • .NET性能优化(文摘)
  • ??myeclipse+tomcat
  • @requestBody写与不写的情况
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [ASP.NET MVC]Ajax与CustomErrors的尴尬
  • [BJDCTF2020]The mystery of ip1
  • [BZOJ 1040] 骑士
  • [CTO札记]如何测试用户接受度?
  • [EFI]Dell Inspiron 15 5567 电脑 Hackintosh 黑苹果efi引导文件
  • [emacs] CUA的矩形块操作很给力啊
  • [json]定义、读写
  • [JS真好玩] 掘金创作者必备: 监控每天是谁取关了你?
  • [LeetCode] Binary Tree Preorder Traversal 二叉树的先序遍历