excel导出
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.util.ListUtils;
import com.alibaba.excel.write.metadata.WriteSheet;
import java.util.Date;
import java.util.List;
public class Test02 {
public static void main(String[] args) {
noModelWrite();
}
public static void noModelWrite() {
String fileName = "D:/test.xlsx";
try (ExcelWriter excelWriter = EasyExcel.write(fileName).build()) {
for (int i = 0; i < 5; i++) {
WriteSheet writeSheet = EasyExcel.writerSheet(i, "模板" + i).head(head()).build();
List<List<Object>> data = dataList();
excelWriter.write(data, writeSheet);
}
}
}
private static List<List<String>> head() {
List<List<String>> list = ListUtils.newArrayList();
List<String> head0 = ListUtils.newArrayList();
head0.add("字符串");
List<String> head1 = ListUtils.newArrayList();
head1.add("数字");
List<String> head2 = ListUtils.newArrayList();
head2.add("日期");
list.add(head0);
list.add(head1);
list.add(head2);
return list;
}
private static List<List<Object>> dataList() {
List<List<Object>> list = ListUtils.newArrayList();
for (int i = 0; i < 10; i++) {
List<Object> data = ListUtils.newArrayList();
data.add("字符串" + i);
data.add(new Date());
data.add(0.56);
list.add(data);
}
return list;
}
}
excel 导入
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
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.property.ExcelContentProperty;
import com.alibaba.excel.read.listener.ReadListener;
import com.wayserkon.demo1.domain.dto.DistrictExcelDTO;
import lombok.extern.slf4j.Slf4j;
import java.io.File;
import java.util.*;
@Slf4j
public class Test02 {
public static void main(String[] args) {
String fileName = "D:/tmp" + File.separator + "demo2.xlsx";
List<DistrictExcelDTO> list = new ArrayList<>(128);
EasyExcel.read(fileName, DistrictExcelDTO.class, new ReadListener<DistrictExcelDTO>() {
@Override
public void invoke(DistrictExcelDTO data, AnalysisContext context) {
list.add(data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
}
}).registerConverter(new Converter<List<String>>() {
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public Class<?> supportJavaTypeKey() {
return List.class;
}
@Override
public List<String> convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
String value = cellData.getStringValue();
String[] split = value.split(" +");
return Arrays.stream(split).toList();
}
}).registerConverter(new Converter<Map<String, List<Integer>>>() {
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public Class<?> supportJavaTypeKey() {
return Map.class;
}
@Override
public Map<String, List<Integer>> convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
String value = cellData.getStringValue();
String[] districts = value.split(" +");
Map<String, List<Integer>> map = new LinkedHashMap<>(16);
for (String district : districts) {
String[] split = district.split(":");
List<Integer> offsets = Arrays.stream(split[1].split(",")).map(Integer::valueOf).toList();
map.put(split[0], offsets);
}
return map;
}
}).doReadAll();
System.out.println(list.size());
System.out.println(list.get(0).getFactorOffsetMap().keySet().getClass());
}
}