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

相关推荐
2501_907136823 小时前
Excel数据根据标题行自动匹配合并到指定模板文件
excel·软件需求
分***84 小时前
批量识别身份证并导出excel工具分享,身份证识别工具离线识别 + 字段精准优化,Win10/11 直接用
excel·身份证识别
runepic5 小时前
Python 批量合并多个 Excel 数据(自动补 0 + 生成明细)
java·python·excel
hellotutu5 小时前
Java 读取 Excel 文件
java·开发语言·excel
yivifu5 小时前
Excel中Lookup函数实现临界点归入下一个等级的方法
java·前端·excel
SunnyDays10115 小时前
使用 Python 冻结、取消冻结和拆分 Excel 窗格
python·excel·冻结窗格·冻结行和列·取消冻结窗格·拆分窗格
TheNextByte15 小时前
如何将Android短信导出到CSV/TEXT/Excel
android·excel
shenweihong5 小时前
鸿蒙6开发保存Excel文件
华为·excel·harmonyos
NocoBase5 小时前
如何快速搭建一个替换 Excel 的系统?(完整指南)
数据库·低代码·开源·excel·个人开发·零代码·无代码
yivifu21 小时前
快速解决Excel多行行高过小导致数据无法阅读的问题
excel