♻️ Refactoring code. 支持string[] 类型导出
This commit is contained in:
1 parent
8add169a45
commit
d114d5de61
3 files changed
+55
-3
No files matched your search
+4
-2
@@ -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");
|
||||
|
||||
+48
@@ -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()));
|
||||
}
|
||||
|
||||
}
|
||||
+3
-1
@@ -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())) {
|
||||
|
||||
Reference in new issue
Block a user