前言
一、什么是EasyExcel?
EasyExcel是阿里巴巴开发的一款开源Java库,专门用于处理Excel文件。与传统的POI相比,EasyExcel拥有更简洁、高效的API,使得开发者可以更轻松地实现Excel文件的读取和写入操作。无论是处理小型还是大型Excel文件,EasyExcel都能提供出色的性能和稳定性。
二、使用步骤
1.引入库
代码如下(示例):
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.0</version>
</dependency>
2.导入数据
代码如下(示例):
/**
* 导入自然人数据
*
* @param files 文件
* @return {@link JsonResponse}<{@link List}<{@link String}>>
* @throws Exception 例外
*/
@ApiOperation(value = "关联自然人导入", httpMethod = "POST")
@PostMapping("/importNaturalPersonData")
public JsonResponse<List<String>> importNaturalPersonData(@RequestParam("files") List<MultipartFile> files) throws Exception {
JsonResponse<List<String>> response = new JsonResponse<>();
response.setResult(relatedpartyService.importNaturalPersonData(files.get(0)));
return response;
}
@Transactional
public List<String> importNaturalPersonData(MultipartFile file) throws IOException {
NaturalPersonListener naturalPersonListener = new NaturalPersonListener(codeMapper, relatedPartyIdentityRelationshipBizMapper, relatedPartyReportedService, naturalPersonService, relatedPartyMapper, relatedPartyRecordMapper, relatedPartyReportedBizMapper);
EasyExcel.read(file.getInputStream(), NaturalPersonImportDto.class, naturalPersonListener).sheet().doRead();
return naturalPersonListener.getErrorMsgList();
}
package com.stock.mr.enterprise.components.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.util.ListUtils;
import com.stock.core.exception.ApplicationException;
import com.stock.core.util.BeanUtil;
import com.stock.core.util.JsonUtil;
import com.stock.mr.enterprise.categoryconfig.dao.RelatedPartyIdentityRelationshipBizMapper;
import com.stock.mr.enterprise.common.constant.CodeTableConstant;
import com.stock.mr.enterprise.common.constant.LogicConstant;
import com.stock.mr.enterprise.common.dao.CodeMapper;
import com.stock.mr.enterprise.common.dao.RelatedPartyMapper;
import com.stock.mr.enterprise.common.dao.RelatedPartyRecordMapper;
import com.stock.mr.enterprise.common.entity.*;
import com.stock.mr.enterprise.components.dto.NaturalPersonImportDto;
import com.stock.mr.enterprise.insideKnowledge.dao.RelatedPartyReportedBizMapper;
import com.stock.mr.enterprise.insideKnowledge.dto.RelatedPartyDto;
import com.stock.mr.enterprise.insideKnowledge.dto.RelatedPartyIdentityRelaDto;
import com.stock.mr.enterprise.insideKnowledge.dto.RelatedPartyParamDto;
import com.stock.mr.enterprise.insideKnowledge.dto.RelatedPartyResultDto;
import com.stock.mr.enterprise.insideKnowledge.service.NaturalPersonService;
import com.stock.mr.enterprise.insideKnowledge.service.RelatedPartyReportedService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFa