DateConverter默认字符串转Date失败,读取.xlsx文件遇技术问题求助
解决DateConverter不支持字符串转日期的问题
这个报错的核心原因是:默认的DateConverter没有配置匹配你Excel日期列(11/28/2017)的格式规则,无法完成字符串到Date类型的转换。你只需要手动注册一个指定了日期格式的转换器就能搞定,具体修改如下:
步骤1:创建并配置日期转换器
首先引入DateConverter类,然后创建实例并设置你的Excel日期格式(这里是MM/dd/yyyy):
import org.apache.commons.beanutils.converters.DateConverter; // 初始化日期转换器,指定支持的日期格式 DateConverter dateConverter = new DateConverter(); // 如果有多种日期格式,可以在数组里添加多个,比如{"MM/dd/yyyy", "yyyy-MM-dd"} dateConverter.setPatterns(new String[]{"MM/dd/yyyy"});
步骤2:注册转换器到BeanUtils
替换你原来的默认转换器注册代码,把上面的自定义转换器注册进去:
Resource configFile = new FileSystemResource("resource" + File.separator + "excel" + File.separator + "template" + File.separator + "cancellation.xml"); // 注册自定义日期转换器 BeanUtilsBean.getInstance().getConvertUtils().register(dateConverter, Date.class); final XLSReader xlsReader = ReaderBuilder.buildFromConfig(configFile); // 后续的Excel读取逻辑...
为什么这样能解决问题?
原来的代码里BeanUtilsBean.getInstance().getConvertUtils().register(false, false, 0);只是关闭了默认转换器的一些严格校验,但并没有指定日期格式规则。通过手动注册带格式的转换器,BeanUtils就能明确知道如何把11/28/2017这样的字符串转换成Date对象了。
内容的提问来源于stack exchange,提问作者Muddassir Rahman
相关产品推荐
相关产品推荐

