1.引入pom依赖
2.代码编写
导入功能大致流程:
控制层
@PostMapping(value = "/import")
@Log("导入")
@ApiOperation("导入")
@PreAuthorize("@el.check('smSalaryAccountInfo:import')")
public ResponseEntity<Object> importSmSalaryAccountInfo(@RequestParam("file") MultipartFile excel)
throws IOException {
smSalaryAccountInfoService.importFileExcel(excel);
return new ResponseEntity<>(HttpStatus.OK);
}
service层
@Override
@Transactional(rollbackFor = Exception.class)
public void importFileExcel(MultipartFile excel) throws IOException{
SmSalaryAccountInfoExcelListener listener = new SmSalaryAccountInfoExcelListener();
List<SmSalaryAccountInfoExcel> data = EasyExcel.read(excel.getInputStream(),
SmSalaryAccountInfoExcel.class,listener).sheet(0).headRowNumber(1).doReadSync();
List<SmSalaryAccountInfo> resources = new ArrayList<>();
for (SmSalaryAccountInfoExcel item : data) {
SmSalaryAccountInfo securer = new SmSalaryAccountInfo();
BeanUtils.copyProperties(item,securer);
securer.setBranchId(item.getBranchId());
securer.setName(item.getName());
securer.setBranch(item.getBranch());
};
//TODO
service层涉及两个类
@Data
public class SmSalaryAccountInfoExcel {
/** 编号 */
/** 防止精度丢失 */
// @ExcelProperty
// private Long id;
/** 柜员号 */
@ExcelProperty
private String branchId;
/** 姓名 */
@ExcelProperty
private String name;
/** 所属单位 */
@ExcelProperty
private String branch;
}
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import lombok.extern.slf4j.Slf4j;
/**
* @author yanci
* @create 2023/5/8 20:14
**/
@Slf4j
public class SmSalaryAccountInfoExcelListener extends AnalysisEventListener<SmSalaryAccountInfoExcel> {
@Override
public void invoke(SmSalaryAccountInfoExcel smSalaryAccountInfoExcel, AnalysisContext analysisContext) {
log.info("解析到一条数据:{}", smSalaryAccountInfoExcel);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
log.info("所有数据解析完成!");
}
}