✨ Introducing new features. 支持 LocalTime 类型转换

This commit is contained in:
lbw committed 2023-03-30 23:03:58 +08:00
1 parent d731366d86
commit 2f85b35bd5
3 files changed
+67 -8

No files matched your search

@@ -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())
@@ -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<LocalTime> {
/**
* 实例
*/
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<String> 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));
}
}
@@ -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)