官方建议的是读取Excel之后直接转成对应对象集合,但是原来系统存在的老方法需要List<List>,故利用EasyExcel将Excel读取成二维List数组List<List>,本文用到EasyExcel版本为3.1.1
//@csdnaAuthor weixin_43620015
//2022年10月17日 13:31:34
public static void main(String[] args) throws Exception {
// List<List<String>> listList = ExcelDataUtil.readExcel(new File("C:\\\\Users\\\\song.cai\\\\Desktop\\\\室分替换-建设.xlsx"));
EasyExcelFactory.read(new File("C:\\Users\\Desktop\\test.xlsx"), null, new ReadListener<Map>() {
/**
* 单次缓存的数据量
*/
public static final int BATCH_COUNT = 100;
/**
*临时存储
*/
private List<Map> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
@Override
public void invoke(Map data, AnalysisContext context) {
cachedDataList.add(data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
//List<Map>
System.out.println(cachedDataList);
System.out.println("+++++++++");
//转换后的List<List<String>>
System.out.println(mapToList(cachedDataList));
}
}).headRowNumber(0).build().readAll();
}
//将List<Map>集合转成List<List<String>>
public static List<List<String>> mapToList(List<Map> maps) {
List<List<String>> dataList = new ArrayList<>();
for (Map map : maps) {
List<String> list = new ArrayList<>();
map.forEach((k, v) -> list.add(ObjectUtils.isEmpty(v) ? "" : v.toString()));
dataList.add(list);
}
return dataList;
}