一、前端页面
<div class="layui-card-header layui-col-md4 left">
<form class="form-horizontal" id="form_table" action="/user/import" enctype="multipart/form-data" method="post">
<button type="submit" class="btn btn-primary">导入Excel
<input class="layui-form-input" type="file" name="filename"/>
</div>
二、pojo层
三、mapper层
四、service层
public int addExcelUser(MultipartFile file)throws Exception {
int result =0;
// 存放excel表中所有user
List userList =new ArrayList<>();
/**
*
* 判断文件版本
*/
String fileName = file.getOriginalFilename();
String suffix = fileName.substring(fileName.lastIndexOf(".")+1);
InputStream ins = file.getInputStream();
Workbook wb =null;
if(suffix.equals("xlsx")){
wb =new XSSFWorkbook(ins);
}else{
wb =new HSSFWorkbook(ins);
}
/**
* 获取excel表单
*/
Sheet sheet = wb.getSheetAt(0);
/**
* line = 2 :从表的第三行开始获取记录
*
*/
if(null != sheet){
for(int line =2; line <= sheet.getLastRowNum();line++){
User user =new User();
Row row = sheet.getRow(line);
if(null == row){
continue;
}
/**
* 判断单元格类型是否为文本类型
*/
if(1 != row.getCell(0).getCellType()){
throw new MyException("单元格类型不是文本类型!");
}
/**
* 获取第一个单元格的内容
*/
String username = row.getCell(0).getStringCellValue();
/**
* 获取第三个单元格的内容,并设置类型为string
*/
String realname = row.getCell(1).getStringCellValue();
row.getCell(2).setCellType(Cell.CELL_TYPE_STRING);
/**
* 获取第四个单元格的内容,并设置类型为string
*/
String userid = row.getCell(2).getStringCellValue();
row.getCell(3).setCellType(Cell.CELL_TYPE_STRING);
/**
* 获取第三个单元格的内容,并设置类型为string
*/
String password = row.getCell(3).getStringCellValue();
row.getCell(4).setCellType(Cell.CELL_TYPE_STRING);
Integer type = Integer.valueOf(row.getCell(4).getStringCellValue());
user.setUsername(username);
user.setRealname(realname);
user.setUserid(userid);
user.setPassword(password);
user.setType(type);
userList.add(user);
}
for(User userInfo:userList){
System.out.println("userinfo=>"+userInfo);
/**
* 判断数据库表中是否存在用户记录,若存在,则更新,不存在,则保存记录
*/
List users =userMapper.queryAll(new User(userInfo.getUsername()));
if(users.size()==0){
result =userMapper.insert(userInfo);
}else{
result =userMapper.update(userInfo);
}
}
}
return result;
}
五、controller层
/**
* @Description: 导入excel用户数据
* @Param: [file, session]
* @return: java.lang.String
* @Author: zhimingw
* @Date: 2021/6/16
*/
@RequestMapping("/import")
public StringexcelImport(@RequestParam(value="filename") MultipartFile file, HttpSession session){
// String fileName = file.getOriginalFilename();
int result =0;
try {
result =userService.addExcelUser(file);
}catch (Exception e) {
e.printStackTrace();
}
if(result >0){
logger.warn("【成功】excel文件数据导入成功");
}else{
logger.warn("【失败】excel数据导入失败");
}
return "redirect:/user/index";
}