easypoi导入Excel兼容日期和字符串格式的日期和时间

embedded/2025/3/20 4:15:33/

问题场景

在使用easypoi导入Excel时,涉及到的常用日期会有yyyy-MM-dd HH:mm:ss、yyyy-MM-dd和HH:mm:ss,但是Excel上面的格式可不止这些,用户总会输入一些其他格式,如

如果在定义verify时用下面这种格式定义,那么总会只能获取到一部分值,如定义成String则获取不到Date格式的值,定义成Date则获取不到String格式的值。

public class verify implements IExcelModel, IExcelDataModel, Serializable {

@Excel(name = "xx日期")
private String dateExcel;

@Excel(name = "xx日期")
private Date dateExcel;

@Excel(name = "xx日期")
private Object dateExcel;

}

解决方法

easypoi版本

<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-web</artifactId><version>4.3.0</version>
</dependency>

定义verify使用Excel注解importFormat = "yyyy-MM-dd",注意要使用String去接收

@Excel(name = "xx日期",importFormat = "yyyy-MM-dd")

private String dateExcel;

当接收到了Excel原始值后会easypoi会格式化成importFormat格式,但是有些格式需要自己处理,只是通过该注解能够获取到了值,至于格式不一致,我们可以自己去转换,如下:

public static String formatDateTime(String inputDate, DateTimeFormatter outputFormatter) {for (String format : SUPPORTED_FORMATS_DATE) {try {DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern(format);LocalDateTime dateTime = LocalDateTime.parse(inputDate, inputFormatter);return dateTime.format(outputFormatter); // 转换为标准格式} catch (DateTimeParseException e) {// 如果当前格式解析失败,继续尝试下一个格式}}return null; // 如果所有格式都无法解析,返回 null
}

private static final List<String> SUPPORTED_FORMATS_DATE = Arrays.asList(
            "yyyy/M/d HH:mm:ss",    // 2025/2/17 13:36:00
            "yyyy-MM-dd HH:mm:ss", // 2025-02-17 13:36:00
            "yyyy-M-dd HH:mm:ss", // 2025-2-17 13:36:00
            "yyyy-MM-d HH:mm:ss", // 2025-2-17 13:6:00
            "yyyy年MM月dd日 HH:mm:ss" // 2025年02月17日 13:36:00
    );

 通过该注解方式获取到值后在verifyHandler类处理成自己想要的格式。

总结

遇事不决问AI大模型,大模型乱答看源码解读各个注解的用途,通过AI大模型解释注解的意思,这样就能找到你想要的答案了。


http://www.ppmy.cn/embedded/174044.html

相关文章

02 windows qt配置ffmpeg开发环境搭建

库下载: https://download.csdn.net/download/weixin_45413401/90497672 版本说明 首先我使用ffmpeg版本是4.2.1QT使用版本5.14.2我选择是c编译 <

使用Python实现经典贪吃蛇游戏教程

运行效果图如下&#xff0c;完整代码在文末 一、环境准备 安装Python 3.x安装pygame库&#xff1a;pip install pygame二、游戏功能说明 基本游戏机制 方向控制&#xff1a;↑ ↓ ← → 键控制蛇移动方向得分规则&#xff1a;每吃1个食物得1分碰撞检测&#xff1a;撞墙或自碰游…

革新协作体验 | 集和诚KMDA-2631协作机器人控制器重磅上市!

随着制造业对柔性生产的需求激增&#xff0c;协作机器人正成为工业升级的核心力量。它们以安全、灵活、易用的特点&#xff0c;与人类并肩完成精密任务。而这一切的背后&#xff0c;离不开一颗强大的“大脑”——KMDA-2631协作机器人控制器&#xff0c;作为集和诚研发中心的全新…

2025-03-17 学习记录--C/C++-PTA 习题4-7 最大公约数和最小公倍数

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 习题4-7 最大公约数和最小公倍数 本题要求两个给定正整数的最大公约数和最小公倍数。 输入格式: 输入在一…

Ansible命令行模式常用模块使用案例(三)

在Ansible中&#xff0c;命令行模式&#xff08;Ad-Hoc 模式&#xff09;是一种快速执行任务的方式&#xff0c;适合临时任务或简单操作。以下是 Ansible 命令行模式中常用模块的使用案例&#xff08;第三部分&#xff09;。 1 user 功能特性&#xff1a;用于管理用户账户&…

[HelloCTF]PHPinclude-labs超详细WP-Level 6Level 7Level 8Level 9-php://协议

由于Level 6-9 关的原理都是通用的, 这里就拿第6关举例, 其他的关卡同理 源码分析 定位到代码 isset($_GET[wrappers]) ? include("php://".$_GET[wrappers]) : ; 与前几关发生变化的就是 php:// 解题分析 这一关要求我们使用 php协议 php:// 协议 php://filte…

设计C语言的单片机接口

一、主要内容 (一)控制引脚 1、定义管脚 // 定义管脚的结构体 struct pin{ int id; // 管脚编号 int mode; // 模式&#xff0c;输入为1&#xff0c;输出为0 int pull; // 输入电阻 int driver; // 功率 } 2、输出电平 语法&#xff1a; void pin_output(s…

c++ 基础题目lambda

1. auto lambda = [](double x) { return static_cast<int>(x); }; 是 匿名函数对象 ,不可直接声明 a.可以赋值给一个与其类型兼容的 std::function 类型的对象 std::function<int(int, int)> lambda = [](int x, int y) { return x + y; }; b.使用具体的 lambda …