com.alibaba
easyexcel
3.3.2
简单粗暴有效,直接ImportExcel.class
对象全部String
类型,读取到data
后,按需自己处理
public String readExcel(@RequestPart("file") MultipartFile file) {
try {
EasyExcel.read(file.getInputStream(), ImportExcel.class, new ReadListener() {
public static final int BATCH_COUNT = 10;
private List cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
@Override
public void invoke(ImportExcel data, AnalysisContext context) {
// todo 全部为String类型的按需转换为自己最终想要的类型
data.setHeight(setHeight(data.getHeight()));
log.error("{}", data);
cachedDataList.add(data);
if (cachedDataList.size() >= BATCH_COUNT) {
saveData();
cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
}
}
private String setHeight(String height) {
return new BigDecimal(height).add(new BigDecimal("200000")).toString();
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
saveData();
}
private void saveData() {
log.info("{}条数据,开始存储数据库!", cachedDataList.size());
log.info("存储数据库成功!");
}
}).sheet().doRead();
} catch (Exception e) {
e.printStackTrace();
}
return "ok";
}