EasyExcelLocalDateTimeConverter.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package com.xjrsoft.common.handler;
  2. import cn.hutool.core.date.DatePattern;
  3. import com.alibaba.excel.converters.Converter;
  4. import com.alibaba.excel.enums.CellDataTypeEnum;
  5. import com.alibaba.excel.metadata.GlobalConfiguration;
  6. import com.alibaba.excel.metadata.data.ReadCellData;
  7. import com.alibaba.excel.metadata.data.WriteCellData;
  8. import com.alibaba.excel.metadata.property.ExcelContentProperty;
  9. import com.fasterxml.jackson.annotation.JsonFormat;
  10. import org.springframework.stereotype.Component;
  11. import java.time.LocalDateTime;
  12. import java.time.format.DateTimeFormatter;
  13. @Component
  14. public class EasyExcelLocalDateTimeConverter implements Converter<LocalDateTime> {
  15. @Override
  16. public Class<LocalDateTime> supportJavaTypeKey() {
  17. return LocalDateTime.class;
  18. }
  19. @Override
  20. public CellDataTypeEnum supportExcelTypeKey() {
  21. return CellDataTypeEnum.STRING;
  22. }
  23. @Override
  24. public LocalDateTime convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
  25. return LocalDateTime.parse(cellData.getStringValue(), DateTimeFormatter.ofPattern(getFormat(contentProperty)));
  26. }
  27. @Override
  28. public WriteCellData<LocalDateTime> convertToExcelData(LocalDateTime value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
  29. return new WriteCellData<>(value.format(DateTimeFormatter.ofPattern(getFormat(contentProperty))));
  30. }
  31. private String getFormat(ExcelContentProperty contentProperty) {
  32. JsonFormat annotation = contentProperty.getField().getAnnotation(JsonFormat.class);
  33. String format = DatePattern.NORM_DATETIME_PATTERN;
  34. if (annotation != null) {
  35. format = annotation.pattern();
  36. }
  37. return format;
  38. }
  39. }