springboot+thymeleaf+excel批量导入用户

一、前端页面

   

       

二、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";

    }

你可能感兴趣的:(springboot+thymeleaf+excel批量导入用户)