需要先倒入POI的jar
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.8</version>
</dependency>


public String exportCharge(MultipartHttpServletRequest request) {
try {
//得到上传的文件
MultipartFile fileFile = request.getFile("file");
//转换成输入流
InputStream in = fileFile.getInputStream();
XSSFWorkbook readWb = new XSSFWorkbook(in);
//遍历该表格中所有的工作表,i表示工作表的数量 getNumberOfSheets表示工作表的总数

XSSFSheet sheet = readWb.getSheetAt(0);
//循环行Row
for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
System.out.println("当前插入第"+rowNum);
XSSFRow hssfRow = sheet.getRow(rowNum);
AllPhone allPhone=new AllPhone();
if (hssfRow != null) {
for (int colNum = 0; colNum < hssfRow.getPhysicalNumberOfCells(); colNum++) {
String tmp = hssfRow.getCell(colNum).toString();
if (colNum == 0) {
int begin = tmp.indexOf(".");
} else if (colNum == 1) {
allPhone.setStage(tmp);
}else if (colNum == 2) {

}else if (colNum == 3) {
allPhone.setCardtype(tmp);
}else if (colNum == 4) {


}else if (colNum == 5) {
if(StringUtil.isNotEmpty(tmp)){
allPhone.setPostcode(tmp);
}
}
}
}
}

} catch (Exception e) {
e.printStackTrace();
}
return "ok";
}


方法二EasyExcel

导包:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>

Controller
EasyExcel.read(file.getInputStream(), GradeCoverDataBean.class,
new GradeCoverDataListener(gradeInfoMapper,matchRegisterMapper)).sheet().doRead();
实体类:
名字就是 GradeCoverDataBean 字段就是excel一一对应

package com.erp.match.common.data;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.erp.match.common.enums.ExcelValueType;
import lombok.Data;

/**
* 功能描述:团队成绩导入
*
* @Author hsy
* @createDate 2022/1/14
*/
@Data
public class TeamGradeCoverDataBean {
@ExcelProperty(value = "赛事名称",index = 1)
private String matchName;
@ExcelProperty(value = "赛事编码",index = 2)
private String matchCode;
@ExcelProperty(value = "组别",index = 3)
private String groupName;
@ExcelProperty(value = "队伍名称",index = 4)
private String teamName;
@ExcelProperty(value = "队伍码",index = 5)
private String teamCode;
@ExcelProperty(value = "领队姓名",index = 6)
private String leaderName;
@ExcelProperty(value = "领队身份证号",index = 7)
private String leaderIdNumber;
@ExcelProperty(value = "成绩",index = 8)
private String teamGrade;
@ExcelProperty(value = "名次",index = 9)
private String teamRanking;
@ExcelIgnore
private String errMessage;
}


然后就是监听器:GradeCoverDataListener
package com.erp.match.service.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.erp.match.common.data.TeamGradeCoverDataBean;
import com.erp.match.dal.entity.MatchTeam;
import com.erp.match.manager.mapper.team.TeamGradeMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.List;

import static java.util.Objects.isNull;

/**
* 功能描述:
*
* @Author hsy
* @createDate 2022/1/14
*/
@Slf4j
public class TeamGrageCoverDataListener extends AnalysisEventListener<TeamGradeCoverDataBean> {
/**
* 每隔10条存数据库,然后清理list,方便内存回收
*/
private static final int BATCH_COUNT = 10;

private List<MatchTeam> matchTeams = new ArrayList<>(BATCH_COUNT);

private List<TeamGradeCoverDataBean> errorTeams = new ArrayList<>();

private TeamGradeMapper teamGradeMapper;

public TeamGrageCoverDataListener(TeamGradeMapper teamGradeMapper) {
this.teamGradeMapper = teamGradeMapper;
}

@Override
public void invoke(TeamGradeCoverDataBean teamGradeCoverDataBean, AnalysisContext analysisContext) {
log.info("导入一条数据:{}",teamGradeCoverDataBean.toString());
// 参数检验
String msg=checkTeamGradeBeanValid(teamGradeCoverDataBean);
if(StringUtils.isEmpty(msg)){
QueryWrapper<MatchTeam> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("team_code", teamGradeCoverDataBean.getTeamCode());
MatchTeam team = teamGradeMapper.selectOne(queryWrapper);
if (isNull(team)) {
teamGradeCoverDataBean.setErrMessage("队伍编码不存在");
errorTeams.add(teamGradeCoverDataBean);
}else {
team.setTeamGrade(teamGradeCoverDataBean.getTeamGrade());
team.setTeamRanking(Integer.valueOf(teamGradeCoverDataBean.getTeamRanking()));
teamGradeMapper.updateById(team);
}
}else{
teamGradeCoverDataBean.setErrMessage(msg);
errorTeams.add(teamGradeCoverDataBean);
}
}

@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
log.info("导入结束!");
log.info("错误条数:{}",errorTeams.size());
errorTeams.clear();

}

private String checkTeamGradeBeanValid(TeamGradeCoverDataBean teamGradeCoverDataBean) {
if(StringUtils.isBlank(teamGradeCoverDataBean.getTeamCode())){
return "队伍码为空";
}
if(StringUtils.isBlank(teamGradeCoverDataBean.getTeamRanking())){
return "名次为空";
}
if(StringUtils.isBlank(teamGradeCoverDataBean.getTeamGrade())){
return "成绩为空";
}
return null;
}
}

}