依赖
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
接口
@RequestMapping(value = "/excel-mysql", method = RequestMethod.POST, consumes = "multipart/form-data")
@ApiOperation(value = "将excel数据存入数据库中")
public R<Boolean> excelMysql(@RequestParam("file") MultipartFile file) {
return sensitiveWordService.excelMysql(file);
}
代码实现
- 业务场景,做将excel文件上传进数据库 做一个敏感词库
public R<Boolean> excelMysql(MultipartFile file) {
try {
ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
List<Map<String, Object>> maps = reader.readAll();
if (maps.size() < 1) {
throw new BizException("请确保文件数据正常");
}
List<SensitiveWordReq> sensitiveWordReqList = new ArrayList<>(maps.size());
for (Map<String, Object> s : maps) {
// 避免重复敏感词出现
SensitiveWordStringReq req = new SensitiveWordStringReq();
req.setWord(s.get("敏感词").toString());
R<Boolean> stringR = wordClient.checkRepeatWord(req);
if (stringR!=null && stringR.getEntity()==true){
continue; //若此excel含有数据库重复已用的敏感词,则跳过本次循环新增
}
SensitiveWordReq sensitiveWordReq = new SensitiveWordReq();
sensitiveWordReq.setId(DataHelper.getUniqueKey());
sensitiveWordReq.setWord(Objects.nonNull(s.get("敏感词")) ?s.get("敏感词").toString():null);
String code = SensitiveWordType.findCode(Objects.nonNull(s.get("类型")) ? s.get("类型").toString() : "");
sensitiveWordReq.setCategCode(code);
sensitiveWordReq.setStatus(0);
sensitiveWordReqList.add(sensitiveWordReq);
}
IdListReq<SensitiveWordReq> req = new IdListReq<>();
req.setIdList(sensitiveWordReqList);
return wordClient.insertSensitiveWord(req);
}catch (Exception e){
if (e instanceof IOException) {
throw new BizException("读取文件异常");
}
return R.failed(e.getMessage());
}
}
excel表格演示
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210513151759526.png)