poi上传解析excel 上传文件

控制层 接收文件
@PostMapping("/excel/upload")
public Object importExpressInformationExcel(@RequestParam(“file”) MultipartFile file) throws Exception{
activityJoinService.importExpressInformation(file);
return new ApiResponse<>();
}

服务层进行处理
public void importExpressInformation(MultipartFile file) throws Exception{
// 获取文件名
String fileName = file.getOriginalFilename();
// 获取文件后缀
String prefix=fileName.substring(fileName.lastIndexOf("."));
//随便给文件起个名字
final File excelFile = File.createTempFile(“excelFormatrion”, prefix);
// MultipartFile 转 File
file.transferTo(excelFile);
XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(excelFile));
//获取excel第一张工作簿
Sheet sheet = workbook.getSheetAt(0);
List activityJoins = new ArrayList<>();
//将sheet的每一行循环
for(Row row : sheet){
if(row.getRowNum() == 0){
continue;//过滤标题行
}
//这里我只需要三个单元格内的数据所以没有循环单元格去取东西
// for (Cell cell : row) {
//循环单元格就这样循环,然后每个cell获取其中的数据
//}
//id
Cell cell = row.getCell(0);
//如果是数字行用getNumericCellValue
Double id = row.getCell(0).getNumericCellValue();
//快递公司
//是字符串的行使用getStringCellValue
String shipChannel = row.getCell(17).getStringCellValue();
//发货单号
String shipSn = row.getCell(18).getStringCellValue();
ActivityJoin activityJoin = new ActivityJoin();
activityJoin.setId(id.longValue());
activityJoin.setShipChannel(shipChannel);
activityJoin.setShipSn(shipSn);
activityJoins.add(activityJoin);
}
//拿到每行的数据存到activityJoins中,之后操作使用
}

你可能感兴趣的:(java,后端)