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

问题场景

在使用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大模型解释注解的意思,这样就能找到你想要的答案了。

相关推荐
Data-Miner2 小时前
AI处理数据的脚本复用与逻辑复用有什么区别?哪种方式更能沉淀工作成果
数据分析·excel
福兮说6 小时前
在浏览器里写一个“够用就好“的 Excel 公式求值器
前端·javascript·excel·编译原理
慧都小妮子1 天前
标签打印如何减少手工抄数?用Bartender 直连 Excel 批量打印
excel·bartender·条码打印·标签打印软件·数据驱动打印·工业打印机
SunnyDays10111 天前
Java 设置 Excel 数据验证:整数、日期、文本长度、下拉列表和时间
java·excel·数据验证·下拉列表
Metaphor6921 天前
使用 Python 设置 Excel 行列自适应 【代码示例】
python·excel
用户0332126663672 天前
使用 Python 设置 Excel 行列自适应 【代码示例】
python·excel
企业数字化笔记2 天前
固定资产Excel批量导入怎么防重复?资产编码、重复检查和错误回执
java·后端·excel
CORNERSTONE3652 天前
低代码开发有哪些应用场景?
低代码·excel·erp·mes·企业数字化
小葱炖豆腐3 天前
python绘制excel折线图
python·excel·numpy·pandas·matplotlib
cspttty3 天前
2026年财务分析岗JD中的Excel、SQL、BI与业务分析要求
大数据·sql·excel