使用EasyExcel时踩过的坑

目录

  • 一、问题描述
  • 二、使用EasyExcel的版本
  • 三、场景复现
  • 四、问题修复

一、问题描述

使用EasyExcel读取文件数据时,出现数据无法读取情况。

二、使用EasyExcel的版本

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.5</version>
</dependency>

三、场景复现

使用了@Accessors(chain = true)(lombok.experimental.Accessors)注解导致无法读取excel文件中的数据。
读取对象定义如下:

@Data
@Accessors(chain = true)
@EqualsAndHashCode
public class DemoDTO implements Serializable {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "编号")@ExcelProperty("编号")private String number;@ApiModelProperty(value = "名称")@ExcelProperty("名称")private String name;
}

读取逻辑如下:

private List<DemoDTO> parseExcelFileData(MultipartFile multipartFile) {List<DemoDTO> demoDTOList = new ArrayList<>();// 创建临时文件File excelFile = FileUtil.createTempFile();try {// 文件转换multipartFile.transferTo(excelFile);Assert.notNull(excelFile, "文件不存在,请重新上传");EasyExcel.read(FileUtil.getInputStream(Objects.requireNonNull(excelFile))).sheet("Sheet1").head(DemoDTO.class).headRowNumber(1).registerReadListener(new AnalysisEventListener<DemoDTO>() {@Overridepublic void invoke(DemoDTO data, AnalysisContext context) {// 获取当前index
//                            Integer currentRowNum = context.readRowHolder().getRowIndex();// 校验格式if (BeanUtil.isNotEmpty(data)) {demoDTOList.add(data);}}@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {log.info("数据读取完毕");}}).doRead();} catch (Exception e) {log.error("文件解析失败", e);} finally {FileUtil.del(excelFile);}return demoDTOList;}

四、问题修复

定义的映射类中不能使用@Accessors(chain = true)(lombok.experimental.Accessors)注解。

@Data
@EqualsAndHashCode
public class DemoDTO implements Serializable {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "编号")@ExcelProperty("编号")private String number;@ApiModelProperty(value = "名称")@ExcelProperty("名称")private String name;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/136041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink(二)【Flink 部署模式】

前言 今天是Flink学习的第二天&#xff0c;我的心情异常的复杂哈哈哈&#xff08;苦笑&#xff09;&#xff0c;学习上还是比较顺利的&#xff0c;感情上我并不擅长&#xff0c;所以心情波动大在所难免。害&#xff0c;至少还有学习让我不被各种糟糕琐碎的日常生活里的人和事所…

Python(四)字符串

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…

Vue3指令

Vue 指令&#xff08;Directives&#xff09;是 Vue.js 的一项核心功能&#xff0c;它们可以在 HTML 模板中以 v- 开头的特殊属性形式使用&#xff0c;用于将响应式数据绑定到 DOM 元素上或在 DOM 元素上进行一些操作。 Vue 指令是带有前缀 v- 的特殊 HTML 属性&#xff0c;它赋…

c语言练习第10周(1~5)

根据公式求和 输入样例20输出样例 534.188884 #include<stdio.h> #include<math.h> int main() {int i,n;scanf("%d", &n);double s 0,t0;for (i 1; i < n; i) {t t sqrt(i);s s t;}printf("%.6lf", s);return 0; } 第一行输入…

获取AAC音频的ADTS固定头部信息

文章目录 前言一、AAC音频中的ADTS二、解析ADTS信息1.标准文档中介绍2.解析3.采样率索引和值4.下载AAC标准文档 前言 调试嵌入式设备中播放aac音频的过程中&#xff0c;了解了aac音频格式&#xff0c;记录在此&#xff0c;防止遗忘。 一、AAC音频中的ADTS ADTS&#xff08;Audi…

深度学习 opencv python 实现中国交通标志识别 计算机竞赛

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 &#x1f525; 优质…

思谋科技进博首秀:工业多模态大模型IndustryGPT V1.0正式发布

大模型技术正在引领新一轮工业革命&#xff0c;但将其应用于工业制造&#xff0c;仍面临许多挑战&#xff0c;专业知识的缺乏是关键难点。11月5日&#xff0c;香港中文大学终身教授、思谋科技创始人兼董事长贾佳亚受邀参加第六届中国国际进口博览会暨虹桥国际经济论坛开幕式。虹…

物联网水表电子阀工作原理是怎样的?

随着科技的不断发展&#xff0c;物联网技术逐渐深入到我们的生活之中。作为智能家居的重要组成部分&#xff0c;物联网水表电子阀凭借其智能化、节能环保等优势&#xff0c;受到了越来越多用户的青睐。接下来&#xff0c;合众小编将来为大家介绍下物联网水表电子阀工作原理。 一…

《面纱》细嚼的句子

记住&#xff0c;履行职责并不值得称道 因为那是你应该做的&#xff0c;就像手脏了该洗手一样。唯有一点颇为重要&#xff0c;那就是爱你的职责。当爱和职责合而为一时&#xff0c;上天就会降恩典于你&#xff0c;让你享受到你连想都不敢想的无边的幸福。——《面纱》 所谓“道…

FreeRTOS五种内存管理详解

freeRTOS五种内存管理详解 heap1 源码分析 void * pvPortMalloc( size_t xWantedSize ) {void * pvReturn NULL; // 申请的内存地址static uint8_t * pucAlignedHeap NULL; // 用于指向堆内存的起始地址#if ( portBYTE_ALIGNMENT ! 1 ) // 如果对齐为1则不对齐&#xff0c…

SpringBoot实现mysql与clickhouse多数据源

一、我们来实现一个mysql与clickhouse多数据源配置 二、数据源配置 # 指定服务名称 spring:application:name: demobigdatadatasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/db?createDatabaseIfNotExisttrue&useUnicodetrue&…

2023云栖大会,Salesforce终敲开中国CRM市场

2015年被视为中国CRM SaaS元年&#xff0c;众多CRM SaaS创业公司和厂商在Salesforce的榜样作用下涌入了CRM SaaS赛道。在全球市场&#xff0c;Salesforce是CRM SaaS领域的领导厂商&#xff0c;连续多年占据了全球CRM SaaS第一大厂商地位。然而&#xff0c;Salesforce作为业务类…

leetcode刷题日记:100.Same Tree(相同的树)和101.Symmetric Tree(对称二叉树)

100.Same Tree(相同的树) 题目给了我们两棵树要我们判断这两颗树是否相同&#xff0c;我首先想到的就是前序序列与中序序列可以唯一确定一棵树&#xff0c;如果我能分别确定这两棵树的前序序列与中序序列&#xff0c;然后再分别比较它们的前序序列与中序序列就能得到这两棵树是…

WPF中ElementName与RelativeSource绑定的局限性以及对策

完全来源于十月的寒流&#xff0c;感谢大佬讲解 <Window x:Class"Test_01.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schem…

3D可视化字母出现频率_vtkLinearExtrusionFilter

开发环境&#xff1a; Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码目的&#xff1a;学习与总结 demo解决问题&#xff1a;统计输入文本中字母出现的频率&#xff0c;不区分大小写&#xff0c;使用3D可是化方式进行显示&…

Figma转Sketch文件教程,超简单!

相信大家做设计的都多多少少听过一点Figma和Sktech&#xff0c;这2个设计软件是目前市场上很受欢迎的专业UI设计软件&#xff0c;在全球各地都有很多粉丝用户。但是相对来说&#xff0c;Figma与Sketch只支持iOS系统有所不同&#xff0c;Figma是一个在线设计软件&#xff0c;不限…

【网络协议】聊聊HTTPDNS如何工作的

传统 DNS 存在哪些问题&#xff1f; 域名缓存问题 我们知道CND会进行域名解析&#xff0c;但是由于本地会进行缓存对应的域名-ip地址&#xff0c;所以可能出现过期数据的情况。 域名转发问题 出口 NAT 问题 域名更新问题 解析延迟问题 因为在解析DNS的时候&#xff0c;需要进行…

【单片机基础小知识-如何通过指针来读写寄存器】

寄存器的本质就是内存&#xff0c;RAM&#xff0c;而指针是可以对内存进行操作的&#xff0c;因此可以通过指针来读写寄存器。 如何读取以下一片地址&#xff1a; 步骤1、首地址 结构体&#xff0c;它所占用的内存空间大小与它内部成员有关。 构造一个28字节的类型 type…

JAVA深化篇_36—— Java网络编程中的常用类

Java网络编程中的常用类 Java为了跨平台&#xff0c;在网络应用通信时是不允许直接调用操作系统接口的&#xff0c;而是由java.net包来提供网络功能。下面我们来介绍几个java.net包中的常用的类。 InetAddress的使用 作用&#xff1a;封装计算机的IP地址和DNS&#xff08;没…

常用设计模式——模板方法模式

什么是模板方法模式 模板方法模式&#xff1a;定义一个操作中的算法的骨架&#xff0c;而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 主要解决&#xff1a;一些方法通用&#xff0c;却要在每一个子类都重写这些方法…