java已经加了@JsonFormat( pattern="yyyy-MM-dd")注解,easyexcel导入的数据为啥还有时分秒
时间: 2023-11-27 19:51:44 浏览: 124
@JsonFormat注解只是对Java对象进行格式化输出,但是在EasyExcel导入数据时,可能会出现时间格式不一致的问题。这是因为EasyExcel默认使用Excel日期格式进行解析,而Excel日期格式包含了时间信息。如果想要只保留日期信息,可以在导入时使用Converter进行转换。
具体做法如下:
1. 自定义一个Converter类,实现com.alibaba.excel.convert.Converter接口,重写convertToJavaData和convertToExcelData方法,用于将Excel中的日期格式转换为Java中的日期格式。
```java
public class DateConverter implements Converter<Date> {
private static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
@Override
public Class<Date> supportJavaTypeKey() {
return Date.class;
}
@Override
public CellData convertToExcelData(Date value, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) throws Exception {
return new CellData(DateUtil.format(value, DEFAULT_DATE_FORMAT));
}
@Override
public Date convertToJavaData(CellData cellData, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) throws Exception {
return DateUtil.parse(cellData.getStringValue(), DEFAULT_DATE_FORMAT);
}
}
```
2. 在ExcelReader中注册Converter。
```java
public void readExcel() {
InputStream inputStream = null;
try {
inputStream = new FileInputStream("test.xlsx");
EasyExcel.read(inputStream, User.class, new UserDataListener())
.registerConverter(new DateConverter())
.sheet().doRead();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
这样就可以保证在导入数据时只保留日期信息了。
阅读全文