diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/RequestExcelArgumentResolver.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/RequestExcelArgumentResolver.java index 2d3ea9751..994f94e78 100644 --- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/RequestExcelArgumentResolver.java +++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/RequestExcelArgumentResolver.java @@ -2,10 +2,7 @@ package com.pig4cloud.pigx.common.excel.aop; import com.alibaba.excel.EasyExcel; import com.pig4cloud.pigx.common.excel.annotation.RequestExcel; -import com.pig4cloud.pigx.common.excel.converters.LocalDateStringConverter; -import com.pig4cloud.pigx.common.excel.converters.LocalDateTimeStringConverter; -import com.pig4cloud.pigx.common.excel.converters.LongStringConverter; -import com.pig4cloud.pigx.common.excel.converters.StringArrayConverter; +import com.pig4cloud.pigx.common.excel.converters.*; import com.pig4cloud.pigx.common.excel.handler.ListAnalysisEventListener; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -75,6 +72,7 @@ public class RequestExcelArgumentResolver implements HandlerMethodArgumentResolv // 这里需要指定读用哪个 class 去读,然后读取第一个 sheet 文件流会自动关闭 EasyExcel.read(inputStream, excelModelClass, readListener).registerConverter(LocalDateStringConverter.INSTANCE) + .registerConverter(LocalTimeStringConverter.INSTANCE) .registerConverter(LocalDateTimeStringConverter.INSTANCE) .registerConverter(LongStringConverter.INSTANCE).registerConverter(StringArrayConverter.INSTANCE) .ignoreEmptyRow(requestExcel.ignoreEmptyRow()).sheet().headRowNumber(requestExcel.headRowNumber()) diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/LocalTimeStringConverter.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/LocalTimeStringConverter.java new file mode 100644 index 000000000..ac180f51c --- /dev/null +++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/LocalTimeStringConverter.java @@ -0,0 +1,63 @@ +package com.pig4cloud.pigx.common.excel.converters; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; + +import java.text.ParseException; +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; + +/** + * LocalDate and string converter + * + * @author L.cm + */ +public enum LocalTimeStringConverter implements Converter { + + /** + * 实例 + */ + INSTANCE; + + @Override + public Class supportJavaTypeKey() { + return LocalTime.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public LocalTime convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) throws ParseException { + if (contentProperty == null || contentProperty.getDateTimeFormatProperty() == null) { + return LocalTime.parse(cellData.getStringValue()); + } + else { + DateTimeFormatter formatter = DateTimeFormatter + .ofPattern(contentProperty.getDateTimeFormatProperty().getFormat()); + return LocalTime.parse(cellData.getStringValue(), formatter); + } + } + + @Override + public WriteCellData convertToExcelData(LocalTime value, ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + DateTimeFormatter formatter; + if (contentProperty == null || contentProperty.getDateTimeFormatProperty() == null) { + formatter = DateTimeFormatter.ISO_LOCAL_TIME; + } + else { + formatter = DateTimeFormatter.ofPattern(contentProperty.getDateTimeFormatProperty().getFormat()); + } + return new WriteCellData<>(value.format(formatter)); + } + +} diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/AbstractSheetWriteHandler.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/AbstractSheetWriteHandler.java index 52251b6d4..353e17c82 100644 --- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/AbstractSheetWriteHandler.java +++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/AbstractSheetWriteHandler.java @@ -11,15 +11,12 @@ import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel; import com.pig4cloud.pigx.common.excel.annotation.Sheet; import com.pig4cloud.pigx.common.excel.aop.DynamicNameAspect; import com.pig4cloud.pigx.common.excel.config.ExcelConfigProperties; -import com.pig4cloud.pigx.common.excel.converters.LongStringConverter; -import com.pig4cloud.pigx.common.excel.converters.StringArrayConverter; +import com.pig4cloud.pigx.common.excel.converters.*; import com.pig4cloud.pigx.common.excel.enhance.WriterBuilderEnhancer; import com.pig4cloud.pigx.common.excel.head.HeadGenerator; import com.pig4cloud.pigx.common.excel.head.HeadMeta; import com.pig4cloud.pigx.common.excel.head.I18nHeaderCellWriteHandler; import com.pig4cloud.pigx.common.excel.kit.ExcelException; -import com.pig4cloud.pigx.common.excel.converters.LocalDateStringConverter; -import com.pig4cloud.pigx.common.excel.converters.LocalDateTimeStringConverter; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.Setter; @@ -108,6 +105,7 @@ public abstract class AbstractSheetWriteHandler implements SheetWriteHandler, Ap @SneakyThrows(IOException.class) public ExcelWriter getExcelWriter(HttpServletResponse response, ResponseExcel responseExcel) { ExcelWriterBuilder writerBuilder = EasyExcel.write(response.getOutputStream()) + .registerConverter(LocalTimeStringConverter.INSTANCE) .registerConverter(LocalDateStringConverter.INSTANCE) .registerConverter(LocalDateTimeStringConverter.INSTANCE) .registerConverter(LongStringConverter.INSTANCE).registerConverter(StringArrayConverter.INSTANCE)