解决EasyExcel导出文件LocalDateTime报错问题

2023-11-14

问题引出

狗子我在参与一个项目的时候接触到数据表格导出为Excel表格的需求,但是在导出的时候会出现报错 Cannot find ‘Converter’ support class LocalDateTime,原因是我需要导出的实体类中存在 LocalDateTime 类型的属性,而又恰巧 EasyExcel 不支持 LocalDate 和 LocalDateTime 接收数据,啊人生

image-20220325001518501

解决方案

在寻找了多篇文章之后,在下面对这个问题进行总结,既然默认不支持我使用这个类型,那就杀出一条路来。

首先先来看报的错误提示:Cannot find ‘Converter’ support class LocalDateTime,明显可以看出来是找不到 LocalDateTime 的一个 Converter,那么这个所谓的 Converter 到底是个什么东西呢?既然他缺少这个东西我们能不能给他自己弄一个上去呢?说干就干!(其实解决方法也真就是这个)

自定义Converter

Converter 在这里其实是一个字段转换器,在 EasyExcel 中担任将Java属性转换成Excel表格中合法数据的一个小东西。由于EasyExcel自己没有我们需要的 LocalDateTime 的字段转换器,那我们就自己搞一个出来。在 config 包下新建一个自定义的字段转换器 LocalDateTimeConverter 。

package edu.lingnan.rili.converter;

import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @author xBaozi
 * @version 1.0
 * @classname LocalDateTimeConverter
 * @description EasyExcel LocalDateTime转换器
 * @date 2022/3/19 2:17
 */

public class LocalDateTimeConverter implements Converter<LocalDateTime> {
    private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";

    @Override
    public Class<LocalDateTime> supportJavaTypeKey() {
        return LocalDateTime.class;
    }

    @Override
    public CellDataTypeEnum supportExcelTypeKey() {
        return CellDataTypeEnum.STRING;
    }

    @Override
    public LocalDateTime convertToJavaData(CellData cellData, ExcelContentProperty contentProperty,
                                           GlobalConfiguration globalConfiguration) {
        return LocalDateTime.parse(cellData.getStringValue(), DateTimeFormatter.ofPattern(DEFAULT_PATTERN));
    }

    @Override
    public CellData<String> convertToExcelData(LocalDateTime value, ExcelContentProperty contentProperty,
                                               GlobalConfiguration globalConfiguration) {
        return new CellData<>(value.format(DateTimeFormatter.ofPattern(DEFAULT_PATTERN)));
    }
}

引用 LocalDateTimeConverter

既然这东西是本来没有然后我们自己弄出来的,那肯定要告诉程序:**诶!这里我给你生了个崽,要记得领回去啊!**所以,我们在原本需要导出的 LocalDateTime 类型中的 @ExcelProperty 注解中引入自定义的字段转换器。

同时要加上一个JsonFormat的格式化注解,将该属性转换成 json格式,这里要注意的就是要导入一下阿里巴巴的 fastjson Maven坐标了。

@ExcelProperty(value = "操作时间", index = 8, converter = LocalDateTimeConverter.class)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("操作时间")
private LocalDateTime operationTime;
<!-- fastjson的Maven坐标 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.73</version>
</dependency>

搞定收工

好啦!到这里我们遇到的问题就已经解决了呀!虽然说前期刚遇到这个问题的时候一直在被折磨,但是却是一个很好的一个提升机会,没点儿bug,怎么能保得住头发呢是吧。

image-20220325004021570

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决EasyExcel导出文件LocalDateTime报错问题 的相关文章

  • java中的csv到pdf文件

    我正在尝试获得一个csv文件解析为pdf 到目前为止我所拥有的内容附在下面 我的问题是这段代码最终出现在 pdf 中的文件在 csv 文件的第一行被截断 我不明白为什么 附示例 本质上我想要一个没有任何操作的 csv 文件的 pdf 版本
  • 如何在 Eclipse 中用阿拉伯语读写

    我在 eclipse 中编写了这段代码来获取一些阿拉伯语单词 然后打印它们 public class getString public static void main String args throws Exception PrintS
  • java.lang.Class: 在 java 程序中初始化 log4j 属性文件时出错

    我正在尝试使用 log4j 运行独立的 java 程序 但在调试时收到以下消息 控制台上没有 log4j 相关日志 log Logger 1343 java lang Class ERROR in 18b4aac2 有人可以建议这里出了什么
  • Java 创建浮雕(红/蓝图像)

    我正在编写一个 Java 游戏引擎 http victoryengine org http victoryengine org 并且我一直在尝试生成具有深度的 3D 图像 您可以使用那些红色 蓝色眼镜看到 我正在使用 Java2D 进行图形
  • 由于连接超时,无法通过 ImageIO.read(url) 获取图像

    下面的代码似乎总是失败 URL url new URL http userserve ak last fm serve 126 8636005 jpg Image img ImageIO read url System out printl
  • 如何从另一个xml文件动态更新xml文件?

    我想从另一个 xml 文件更新 xml 文件 我使用了一个 xml 文件 如下所示 one xml
  • 无法加载 jar 文件的主类

    我使用 Eclipse IDE 开发了一个应用程序 创建应用程序后 我以 jar 格式导出项目 当我尝试运行此 jar 文件时 出现错误 无法加载主类 请帮忙 当您将项目导出为 jar 时 请参阅此所以问题 https stackoverf
  • Java 泛型/类型调度问题

    考虑以下程序 import java util List import java util ArrayList public class TypeTest public static class TypeTestA extends Type
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • PropertySources 中各种源的优先级

    Spring引入了新的注释 PropertySources对于所有标记为的类 Configuration since 4 0 需要不同的 PropertySource作为论证 PropertySources PropertySource c
  • 服务器到 Firebase HTTP POST 结果为响应消息 200

    使用 Java 代码 向下滚动查看 我使用 FCM 向我的 Android 发送通知消息 当提供正确的服务器密钥令牌时 我收到如下所示的响应消息 之后从 FCM 收到以下响应消息 Response 200 Success Message m
  • 使用 java 按电子邮件发送日历邀请

    我正在尝试使用 java 发送每封电子邮件的日历邀请 收件人收到电子邮件 但不会显示接受或拒绝的邀请 而是将该事件自动添加到他的日历中 我正在使用 ical4j jar 构建活动 邀请 private Calendar getInvite
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • 如何在java中使jpeg无损?

    有没有人可以告诉我如何使用编写 jpeg 文件losslessjava中的压缩 我使用下面的代码读取字节来编辑字节 WritableRaster raster image getRaster DataBufferByte buffer Da
  • 在 Selenium WebDriver 上如何从 Span 标签获取文本

    在 Selenium Webdriver 上 如何从 span 标记检索文本并打印 我需要提取文本UPS Overnight Free HTML代码如下 div id customSelect 3 class select wrapper
  • ExceptionHandler 不适用于 Throwable

    我们的应用程序是基于 Spring MVC 的 REST 应用程序 我正在尝试使用 ExceptionHandler 注释来处理所有错误和异常 I have ExceptionHandler Throwable class public R
  • 使用 Java 从 S3 上的文件在 S3 上创建 zip 文件

    我在 S3 上有很多文件 需要对其进行压缩 然后通过 S3 提供压缩文件 目前 我将它们从流压缩到本地文件 然后再次上传该文件 这会占用大量磁盘空间 因为每个文件大约有 3 10MB 而且我必须压缩多达 100 000 个文件 所以一个 z
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • Path2D 上的鼠标指针检测

    我构建了一个Path2D http docs oracle com javase 7 docs api java awt geom Path2D html表示由直线组成的未闭合形状 我希望能够检测何时单击鼠标并且鼠标指针靠近路径 在几个像素
  • MongoDB Java 驱动程序:MongoCore 驱动程序与 MongoDB 驱动程序与 MongoDB 异步驱动程序

    MongoDB Java 驱动程序有三种不同的驱动程序选项 核心驱动 MongoDB 驱动程序 MongoDB 异步驱动程序 The 驱动程序描述页面 https docs mongodb org ecosystem drivers jav

随机推荐

  • Linux03:CentOS7.5安装jdk1.8

    jdk下载地址 链接 https pan baidu com s 1GvcOgsIXn502aZC5yk1aDg 提取码 l16v 1 上传安装包 创建目录 mkdir p data soft 上传安装包 2 解压 tar zxvf jdk
  • Swagger常用注解强调点说明

    Swagger注解 常用注解 Api 用于类 一般用于controller类 表示 标识这个类是swagger的资源 显示在文档中 ApiOperation 用于方法 一般用于controller中的方法上 表示一个http请求的操作 Ap
  • Python爬虫的Selenium(学习于b站尚硅谷)

    目录 一 Selenium 1 为什么要学习Selenium 1 什么是Selenium 2 为什么使用selenium 3 代码演示 2 selenium的基本使用 1 如何安装selenium 2 selenium的使用步骤 3 代码的
  • Linux是什么,能干什么,在哪干?

    Linux就是个操作系统 它和Windows XP Windows 2003 2008什么的一样就是一个操作系统而已 Linux能干什么 它能当服务器 服务器上安装者各种企业应用 服务 比如 Web服务 apache 就是能架设网站的 数据
  • 程序员的自我修养(十二) -- Linux共享库

    共享库 从文件结构上来看 共享库和共享对象没什么区别 Linux下的共享库就是欧通的ELF共享对象 共享库的更新有两类 兼容更新 不兼容更新 版本命名 libname so x y z x 主版本号 库的重大升级 不同主版本号之间是不兼容的
  • 【高危】 Zoom Desktop Client for Windows <5.14.5 权限升级漏洞

    漏洞描述 Zoom 是一种用于视频会议 在线会议和远程协作的软件平台 Zoom Desktop Client for Windows 5 14 5 之前版本由于对数据的真实性验证不足 经过身份验证的攻击者可通过网络访将权限升级为 SYSTE
  • 核医学笔记-标准摄取值SUV计算

    SUV SUV值全称为标准摄取值 standard uptake value SUV 是pet在肿瘤诊断中常用的半定量指标 是指局部组织摄取的显像剂的放射性活度与全身平均注射活度 SUV 病灶的放射性浓度 kBq ml 注射剂量 MBq 体
  • Java五子棋详细步骤及完整代码

    五子棋 1 定义声明一个二维数组做棋盘 import java util Scanner public class Main public static void main String args 定义声明一个二维数组作为棋盘 int ga
  • c++primer 第十九章笔记 02运行时类型识别

    19 2 运行时类型识别 typeid运算符 用于返回表达式的类型 dynamic cast运算符 用于将基类的指针或引用安全地转换成派生类的指针或引用 将这两个运算符用于某种类型的指针或引用 当该类型含有虚函数 运算符将使用指针或引用所绑
  • sample函数—R语言

    简述 Sample函数从x的元素中提取指定大小的样本 使用替换或不替换 其使用格式为 sample函数 sample x size replace FALSE prob NULL 其中 x 一个可供选择的一个或多个元素的向量 或一个正整数
  • 用74LS165实现串口扩展并行输入口

    1 74LS165各个端口功能 SH RD 移位 装载数据 当为高电平时 在时钟信号下进行移位 当为低电平时 将并行输入口的数据送到寄存器中 CLK 时钟输入 A H 并行输入口 QH QH 串行输出口 GND 接地端 SER 串行输入口
  • SpringBoot 项目打包后获取不到resource下资源的解决

    SpringBoot 项目打包后获取不到resource下资源的解决 在项目中有几个文件需要下载 然后不想暴露真实路径 又没有CDN 便决定使用接口的方式来获取文件 最初的时候使用了传统的方法来获取文件路径 发现不行 查找资料后发现是Spr
  • Java垃圾回收(GC)机制

    一 为什么要垃圾回收 如果不进行垃圾回收 内存迟早都会被消耗空 因为我们在不断的分配内存空间而不进行回收 除非内存无限大 我们可以任性的分配而不回收 但是事实并非如此 所以 垃圾回收是必须的 哪些内存需要回收 哪些内存需要回收是垃圾回收机制
  • 亲密关系-【沟通日志】-如何不再重蹈覆辙

    大多数人会问 我要怎么克服眼前的困难 实际上应该问 哪些事已经做得很好 学会记录成长 就能固定成长 自我激励 过去的成功 会激发未来的成功 意识到自己已经走了多远 你才会更愿意继续去坚持 记录成长的工具 沟通日志 日期 年 日 每日记录 1
  • 2.Python数据分析项目——旅游景点票价预测

    1 总结 流程 具体操作 基本查看 查看缺失值 查看数值类型 预处理 缺失值处理 填充 拆分数据 获取有需要的值 统一数据格式 数据分析 groupby分组求最值数据 seaborn可视化 预测 RandomForestRegressor
  • vite简单介绍和配置整理

    vite简单介绍和配置整理 一 介绍 Vite 法语 快的意思 是一个HTTP服务器 特殊的地方 可以在单文件中书写ES6语法 支持热更新 请求的内容才会被打包 更新 Rollup打包 二 配置 总的配置 import defineConf
  • MySQL 8.0 密码策略修改

    首次登录mysql 需要修改原始密码 mysql gt show databases ERROR 1820 HY000 You must reset your password using ALTER USER statement befo
  • Ground Rules

    Ground Rules 1 Ground rules ground ra nd n 地面 土 土地 土壤 v 触海底 使停飞 阻止 起飞 罚 儿童 不准出去玩 adj 磨细的 剁碎的 rule ru l n 规则 统治 控制 管理 v 统
  • C语言:getchar( ) 函数详解

    文章目录 一 getchar 函数定义 二 函数返回值 三 注意区分 getchar 和 scanf 四 getchar 的使用实例 一 getchar 函数定义 getchar 字符输入函数 没有参数 从输入缓冲区里面读取一个字符 一次只
  • 解决EasyExcel导出文件LocalDateTime报错问题

    文章目录 问题引出 解决方案 自定义Converter 引用 LocalDateTimeConverter 搞定收工 问题引出 狗子我在参与一个项目的时候接触到数据表格导出为Excel表格的需求 但是在导出的时候会出现报错 Cannot f