使用poi导出了一个xls,其中一个单元格的值是日期时间(例如:2020-01-01 12:01:12),我想把它变成年月日格式(2020年1月1日),于是右键设置单元格格式,发现不起作用。
解决方法:在导入时将这个日期设置成Excel的日期序列值:
String value ="2020-01-01 12:01:01";
// 定义时间格式的正则表达式
String regex = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}";
// 创建Pattern对象,并编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建Matcher对象,并进行匹配
Matcher matcher = pattern.matcher(value);
// 判断是否匹配成功
if(matcher.matches()){
// 创建SimpleDateFormat对象,并指定日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
// 解析字符串为Date对象
Date date = sdf.parse(value);
double excelDate = org.apache.poi.ss.usermodel.DateUtil.getExcelDate(date);//转换成Excel的日期序列值
cell.setCellValue(excelDate);
} catch (ParseException e) {
System.out.println("生成Excel进行日期转换操作时报错!");
e.printStackTrace();
}
}
设置后Excel就能设置日期格式了。但是如果这个单元格式格式是常规,就会显示日期序列值。