使用easyExcel导入导出Date类型的转换问题

起因:在业务需求上需要将Excel表中的日期导入,存储到数据库中,但是entity中的日期类型使用Date来接收,这样导致时间精确到秒。这时,即使使用@DateTimeFormat("yyyy-MM-dd")也无法成功转换,会报如下错误:

Convert data com.alibaba.excel.metadata.data.ReadCellData@a8b42f88 to class java.util.Date error

如果使用LocalDate也会报类型转换异常

解决方案:

步骤一:自定义转换器

package com.wedu.modules.dossier.common;import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.converters.WriteConverterContext;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;import java.text.SimpleDateFormat;
import java.util.Date;/*** Date转换类* @author Hou* @create 2023/8/23 10:15*/
public class DateConverter implements Converter<Date> {private static  final String PATTERN_YYYY_MM_DD = "yyyy-MM-dd HH:mm:ss";@Overridepublic Class<Date> supportJavaTypeKey() {return Date.class;}/*** easyExcel导出数据类型转换* @param cellData* @param contentProperty* @param globalConfiguration* @return* @throws Exception*/@Overridepublic Date convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {String value = cellData.getStringValue();SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_YYYY_MM_DD);Date parse = sdf.parse(value);return parse;}/*** easyExcel导入Date数据类型转换* @param context* @return* @throws Exception*/@Overridepublic WriteCellData<String> convertToExcelData(WriteConverterContext<Date> context) throws Exception {Date date = context.getValue();if (date == null) {return null;}SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_YYYY_MM_DD);return new WriteCellData<>(sdf.format(date));}}

 进行数据转换后就可以对easyExcel进行导入导出操作了。

如果需要多个其他的日期转换格式,那么按需求定义另外的类就行。

步骤二:在entity中对应的属性上添加@ExcelProperty注解,并在注解的converter属性中加入所写的转换器类,如下图所示:

 

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

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

相关文章

前端面试:【前端工程化】CommonJS 与 ES6 模块

嗨&#xff0c;亲爱的前端开发者&#xff01;在现代Web开发中&#xff0c;模块化是构建可维护和可扩展应用程序的关键。本文将深入探讨两种主要的JavaScript模块系统&#xff1a;CommonJS 和 ES6 模块&#xff0c;以帮助你了解它们的工作原理、用法以及如何选择合适的模块系统。…

SpringBoot案例-配置文件-@ConfigurationProperties

问题分析 在往期的配置参数的文章中&#xff0c;对于阿里云OSS的参数时设置在yml配置文件中&#xff0c;然后使用Value&#xff08;”${}“&#xff09;对参数进行赋值&#xff0c;具体如下&#xff1a; 此种方法比较繁琐 问题解决 使用注解 Data 为变量自动生成get/set方…

2023国赛数学建模思路 - 案例:异常检测

文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 建模资料 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常…

MyBatis进阶:告别SQL注入!MyBatis分页与特殊字符的正确使用方式

目录 引言 一、使用正确的方式实现分页 1.1.什么是分页 1.2.MyBatis中的分页实现方式 1.3.避免SQL注入的技巧 二、特殊字符的正确使用方式 2.1.什么是特殊字符 2.2.特殊字符在SQL查询中的作用 2.3.如何避免特殊字符引起的问题 2.3.1.使用CDATA区段 2.3.2.使用实体引…

怎么做出老板看得懂的财务数据分析报表?

财务数据分析报表的主要作用就是为决策提供必不可少的数据信息&#xff0c;让老板以及管理层在充分了解企业现金流情况、债务能力、还债能力、进账情况等财务信息后&#xff0c;更科学地做出运营管理决策。因此&#xff0c;财务数据分析报表必须做得直观易懂&#xff0c;毕竟不…

Qt与电脑管家3

1.ui页面设计技巧 最外面的widget&#xff1a; 上下左右的margin都置相同的值 这里有4个widget&#xff0c;做好一个后&#xff0c;后面3个可以直接复制.ui文件&#xff0c;然后进行微调即可。 2.现阶段实现的效果&#xff1a; 3.程序结构&#xff1a; btn1--->btn btn1---…

【第三阶段】kotlin语言的内置函数takeif

package Stage3fun main() {println(checkPermission("root","123")) }//检查校验 //username.takeif{true/false} true:返回username本身 false:返回nullfun checkPermission(userame:String,pwd:String):String{return userame.takeIf { permissionSy…

Scene Builder中设置首选版本

我目前在用的Scene Builder是Java19版本编译的&#xff0c;但是我使用的jfx是17.0.7版本&#xff0c;所以在使用Scene Builder修改窗体文件时&#xff0c;在IDEA中reload后自动将文件改为Java19版本&#xff0c;同时告警时遇到了一个问题&#xff0c;它一直在覆盖JavaFX版本到1…

【QT5-自我学习-线程qThread移植与使用-通过代码完成自己需要功能-移植小记3】

【QT5-自我学习-线程qThread移植与使用-通过代码完成自己需要功能-移植小记3】 1、前言2、实验环境3、自我总结&#xff08;1&#xff09;文件的编写&#xff08;2&#xff09;信号与槽的新理解&#xff08;3&#xff09;线程数据的传递 4、移植步骤第一步&#xff1a;添加新文…

4、Spring_IOC注解开发

IOC 注解开发 版本了解 2.0版本时开始支持注解开发&#xff08;2.0之前就是昨天学习的纯 xml 操作&#xff09;2.5版本才完善3.0版本支持纯注解开发 1.注解&xml配置Bean 1.1配置用户mapper 配置 mapper public interface UserMapper {void save(); }配置 mapper 实现类…

1.文章复现《热电联产系统在区域综合能源系统中的定容选址研究》(附matlab程序)

0.代码链接 文章复现《热电联产系统在区域综合能源系统中的定容选址研究》&#xff08;matlab程序&#xff09;-Matlab文档类资源-CSDN文库 1.简述 本文采用遗传算法的方式进行了下述文章的复现并采用电-热节点的方式进行了潮流计算以降低电网的网络损耗 分析了电网的基本数…

如何更高效的写出更健全的代码,一篇文章教会你如何拥有一个良好的代码风格

前言&#xff1a;在平常的写代码的过程中&#xff0c;或多或少的遇到很多奇怪的 bug &#xff0c;尤其是一些大的程序&#xff0c;明明上一部分都是好好的&#xff0c;写下一块的时候突然多几百个 bug 的情况&#xff0c;然后这一块写完了后编译的时候直接傻眼了&#xff0c;看…

8、Vue 核心技术与实战 智慧商城项目 DAY8~10

1、 项目演示 2、 项目收获 3、 创建项目 4、调整初始化目录 1、删掉&#xff08;1&#xff09;assets中的文件&#xff08;2&#xff09;components中的文件&#xff08;3&#xff09;views中的文件2、(1)修改路由配置&#xff0c;默认的路由是个空数组即可&#xff0c;把路由…

【官方中文文档】Mybatis-Spring #使用 Spring Batch

使用 Spring Batch MyBatis-Spring 1.1.0 发布以后&#xff0c;提供了三个 bean 以供构建 Spring Batch 应用程序&#xff1a;MyBatisPagingItemReader、MyBatisCursorItemReader 和 MyBatisBatchItemWriter。 而在 2.0.0 中&#xff0c;还提供了三个建造器&#xff08;builde…

SqlServer2019—解决SQL Server 无法连接127.0.0.1的问题

1、打开SQL Server 2019配置管理器 2、SQL Servere 网络配置(启用 Named Pipes 和 TCP/IP) 3、修改TCP/IP协议(右键选择属性—IP地址)&#xff0c;具体如下图所示&#xff1a; 4、重启SQL Server服务

【瑞吉外卖】所遇问题及解决方法

太菜了实习之余瑞吉外卖补充一下基础知识&#xff08;&#xff0c;不然真啥也不会了。 请输入正确的手机号&#xff01; 是因为我测试了我的手机号&#xff0c;爆红&#xff0c;以为方法有错。但其实是前端代码检查手机号是否符合规范的语句有点&#xff08;&#xff09;啊啊…

PyTorch训练简单的生成对抗网络GAN

文章目录 原理代码结果参考 原理 同时训练两个网络&#xff1a;辨别器Discriminator 和 生成器Generator Generator是 造假者&#xff0c;用来生成假数据。 Discriminator 是警察&#xff0c;尽可能的分辨出来哪些是造假的&#xff0c;哪些是真实的数据。 目的&#xff1a;使…

安卓aab安装测试

aab无法直接安装到手机上&#xff0c;google为我们提供了bundtool工具帮我们安装 官方介绍bundletool下载bundletool 使用介绍 先生成apks&#xff0c;然后在安装生成apks java -jar bundletool-all-1.15.4.jar build-apks --bundleaab文件路径 --output输出文件&#xff0…

[LeetCode周赛复盘] 第 111 场双周赛20230819

[LeetCode周赛复盘] 第 111 场双周赛20230819 一、本周周赛总结2824. 统计和小于目标的下标对数目1. 题目描述2. 思路分析3. 代码实现 2825. 循环增长使字符串子序列等于另一个字符串1. 题目描述2. 思路分析3. 代码实现 2826. 将三个组排序1. 题目描述2. 思路分析3. 代码实现 …

【VM迁移】虚拟机迁移——冷迁移热迁移

虚拟机迁移 在虚拟机日常使用时&#xff0c;经常会用到虚拟机迁移&#xff0c;但有冷迁移和热迁移两种&#xff0c;但很多人对这两种机制和区别有些不了解。下面介绍下吧&#xff1a; 冷迁移&#xff08;cold migration&#xff09; 也叫静态迁移。即关闭电源的虚拟机进行迁…