♻️ Refactoring code. 支持string[] 类型导出

This commit is contained in:
lbw committed 2023-03-04 22:37:42 +08:00
1 parent 8add169a45
commit d114d5de61
3 files changed
+55 -3

No files matched your search

@@ -4,6 +4,7 @@ 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.StringArrayConverter;
import com.pig4cloud.pigx.common.excel.handler.ListAnalysisEventListener;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -73,8 +74,9 @@ public class RequestExcelArgumentResolver implements HandlerMethodArgumentResolv
// 这里需要指定读用哪个 class 去读,然后读取第一个 sheet 文件流会自动关闭
EasyExcel.read(inputStream, excelModelClass, readListener).registerConverter(LocalDateStringConverter.INSTANCE)
.registerConverter(LocalDateTimeStringConverter.INSTANCE).ignoreEmptyRow(requestExcel.ignoreEmptyRow())
.sheet().headRowNumber(requestExcel.headRowNumber()).doRead();
.registerConverter(LocalDateTimeStringConverter.INSTANCE)
.registerConverter(StringArrayConverter.INSTANCE).ignoreEmptyRow(requestExcel.ignoreEmptyRow()).sheet()
.headRowNumber(requestExcel.headRowNumber()).doRead();
// 校验失败的数据处理 交给 BindResult
WebDataBinder dataBinder = webDataBinderFactory.createBinder(webRequest, readListener.getErrors(), "excel");
@@ -0,0 +1,48 @@
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.util.Arrays;
import java.util.stream.Collectors;
/**
* LocalDate and string converter
*
* @author L.cm
*/
public enum StringArrayConverter implements Converter<String[]> {
/**
* 实例
*/
INSTANCE;
@Override
public Class supportJavaTypeKey() {
return String[].class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public String[] convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) throws ParseException {
return cellData.getStringValue().split(",");
}
@Override
public WriteCellData<String> convertToExcelData(String[] value, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
return new WriteCellData<>(Arrays.stream(value).collect(Collectors.joining()));
}
}
@@ -11,6 +11,7 @@ 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.StringArrayConverter;
import com.pig4cloud.pigx.common.excel.enhance.WriterBuilderEnhancer;
import com.pig4cloud.pigx.common.excel.head.HeadGenerator;
import com.pig4cloud.pigx.common.excel.head.HeadMeta;
@@ -107,7 +108,8 @@ public abstract class AbstractSheetWriteHandler implements SheetWriteHandler, Ap
public ExcelWriter getExcelWriter(HttpServletResponse response, ResponseExcel responseExcel) {
ExcelWriterBuilder writerBuilder = EasyExcel.write(response.getOutputStream())
.registerConverter(LocalDateStringConverter.INSTANCE)
.registerConverter(LocalDateTimeStringConverter.INSTANCE).autoCloseStream(true)
.registerConverter(LocalDateTimeStringConverter.INSTANCE)
.registerConverter(StringArrayConverter.INSTANCE).autoCloseStream(true)
.excelType(responseExcel.suffix()).inMemory(responseExcel.inMemory());
if (StringUtils.hasText(responseExcel.password())) {