导入文件内容,如图
1.pom.xml 导入jar
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.6</version>
</dependency>
2.工具类,监听器
@Log4j2
@Data
public class ImportInputListener<T> extends AnalysisEventListener<T> {
ArrayList<T> list = new ArrayList<>();
@Override
public void invoke(T t, AnalysisContext analysisContext) {
log.info("invoke T:" + t.toString());
list.add(t);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
log.info("读取待导入数据:" + list.size());
}
}
3. controller
@RequestMapping(method = RequestMethod.POST, value = "/upload")
@ApiOperation(value = "导入", notes = "")
public void importExcelData(@RequestParam("file") MultipartFile file) {
easyExcelService.excute(file);
}
4.service
public void excute(MultipartFile file) {
InputStream inputStream;
try {
inputStream = new BufferedInputStream(file.getInputStream());
log.info("开始读取文件信息开始");
ImportInputListener<UserInfo> userInfoInputListener = new ImportInputListener<>();
//headRowNumber 从0开始
EasyExcel.read(inputStream, UserInfo.class, userInfoInputListener).sheet().headRowNumber(2).doRead();
List<UserInfo> list = userInfoInputListener.getList();
// 忽略空行情况
list = list.stream().filter(item -> ObjectUtils.isNotEmpty(item.getId())).collect(Collectors.toList());
log.info("开始读取文件信息结束");
long total = list.size();
log.info("整理为待导入数据总数:" + total);
log.info("整理为待导入数据为:" + JSON.toJSONString(list));
//处理导入数据
} catch (Exception e) {
log.error("导入数据失败");
}
}
完成。