You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Excel中的日期(12-dec-2020)导入MySQL?Java日期处理报错求助

解决Excel日期格式转换的SimpleDateFormat错误问题

错误原因分析

  • 缺失必要导入:未导入java.text.SimpleDateFormat、java.text.ParseException和java.util.Date,导致编译器无法识别相关类,触发"The import cannot be resolved"错误。
  • 方法调用逻辑颠倒:SimpleDateFormat.format()需要传入Date类型对象,你直接传递字符串(exdata[1][5].toString()),必然出现"Cannot format given Object as a Date";后续用错误格式的字符串执行parse操作,又会引发"unparseable date"异常。
  • Excel单元格处理不当:直接用String.valueOf(ecolumn)转换日期单元格,会将Excel内部的日期值转为默认的dd-MMM-yyyy格式字符串,增加后续转换的复杂度。

解决方案

1. 导入必要依赖包

在代码头部添加以下导入语句:

import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.Locale;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.DateUtil;

2. 正确读取Excel日期单元格(推荐方案)

不要直接将日期单元格转为字符串,而是先获取Date对象,再按需格式化存入数组:

for (int row = 0; row < sheet.getLastRowNum() + 1; row++) {
    XSSFRow erow = sheet.getRow(row);
    for (int column = 0; column < sheet.getRow(0).getLastCellNum(); column++) {
        XSSFCell ecolumn = erow.getCell(column);
        if (ecolumn != null) {
            // 判断是否为日期类型单元格
            if (ecolumn.getCellType() == CellType.NUMERIC && DateUtil.isCellDateFormatted(ecolumn)) {
                Date cellDate = ecolumn.getDateCellValue();
                // 按Excel原格式"MM/dd/yyyy"转为字符串存入数组
                exdata[row][column] = new SimpleDateFormat("MM/dd/yyyy").format(cellDate);
            } else {
                // 非日期单元格正常转字符串
                exdata[row][column] = String.valueOf(ecolumn);
            }
        } else {
            exdata[row][column] = ""; // 处理空单元格
        }
    }
}

// 后续转换为目标格式示例
try {
    Date date = new SimpleDateFormat("MM/dd/yyyy").parse(exdata[1][5]);
    String targetFormat = new SimpleDateFormat("yyyy-MM-dd").format(date);
    System.out.println(targetFormat);
} catch (ParseException e) {
    e.printStackTrace();
}

3. 处理已存入数组的dd-MMM-yyyy格式字符串

如果数组中已经是12-dec-2020这类字符串,需要先按对应格式解析为Date,再转成目标格式:

try {
    // 指定英文Locale避免月份缩写解析失败
    Date date = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH).parse(exdata[1][5]);
    String formattedDate = new SimpleDateFormat("yyyy-MM-dd").format(date);
    System.out.println(formattedDate);
} catch (ParseException e) {
    e.printStackTrace();
}

内容的提问来源于stack exchange,提问作者Yasmine El

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:27:22