POI导入导出设置格式

POI导入

@RequestMapping("/user/importExcel")
    @ResponseBody
    public Boolean importExcel(HttpServletRequest request) throws Exception {
        MultipartHttpServletRequest req = (MultipartHttpServletRequest) request;
        MultipartFile file = req.getFile("excel");
        String filename = file.getOriginalFilename();
        String ext = filename.substring(filename.lastIndexOf("."));
        //03:xls    文本        65536
        //07:xlsx    xml        106万
        Workbook wb = null;
        if(ext.equals(".xls")) {
            wb = new HSSFWorkbook(file.getInputStream());
        }else if(ext.equals(".xlsx")) {
            wb = new XSSFWorkbook(file.getInputStream());
        }else {
            return false;
        }
        
        Sheet sheet = wb.getSheetAt(0);
        List<UserInfo> list = new ArrayList<UserInfo>();
        for (Row row : sheet) {
            if(row.getRowNum()>1) {
                //解析
                UserInfo user = new UserInfo();
                
                String username = row.getCell(0).getStringCellValue();
                String password = row.getCell(1).getStringCellValue();
                
                // 生成uuid
                String id = UUID.randomUUID().toString();
                String uuid = "";
                String[] ids = id.split("-");
                for (String s : ids) {
                    uuid += s;
                }

                // slat = username + uuid;

                // 将用户名作为盐值
                ByteSource salt = ByteSource.Util.bytes(username + uuid);
                /*
                 * MD5加密: 使用SimpleHash类对原始密码进行加密。 第一个参数代表使用MD5方式加密 第二个参数为原始密码 第三个参数为盐值,即用户名
                 * 第四个参数为加密次数 最后用toHex()方法将加密后的密码转成String
                 */
                String newPs = new SimpleHash("MD5", password, salt, 2).toHex();
                
                String name = row.getCell(2).getStringCellValue();
                Date birthday = row.getCell(3).getDateCellValue();
                String sex = row.getCell(4).getNumericCellValue() == 0 ?"男":"女";
                
                user.setUsername(username);
                user.setPassword(newPs);
                user.setSalt(uuid);
                user.setState((byte)0);
                user.setName(name);
                
                SysRole role = new SysRole();
                role.setId((long)2);
                
                List roleList = new ArrayList();
                roleList.add(role);
                user.setRoleList(roleList);
                
                
                list.add(user);
            }
        }
        List<UserInfo> results = authService.saveUsers(list);
        return true;
    }

 POI导出

@RequestMapping("/user/exportExcel")
    @ResponseBody
    public void exportExcel(HttpServletRequest request, HttpServletResponse response) throws Exception {
        
        response.setContentType("application/x-execl");
        response.setHeader("Content-Disposition", "attachment;filename=" + new String("用户列表.xlsx".getBytes(), "ISO-8859-1"));
        //创建一个空的工作簿
        Workbook wb = new XSSFWorkbook();
        //给工作簿创建一个工作表(sheet)
        Sheet sheet = wb.createSheet("人员信息");
        
        //处理表头
        //1.合并单元格
        CellRangeAddress rangeCell = new CellRangeAddress(0, 0, 0, 4);
        //将合并单元格赋予工作表
        sheet.addMergedRegion(rangeCell);
        CellStyle headerStyle = wb.createCellStyle();
        headerStyle.setAlignment(HorizontalAlignment.CENTER);
        headerStyle.setVerticalAlignment(VerticalAlignment.CENTER);
        Font headerFont = wb.createFont();
        headerFont.setBold(true);
        headerFont.setFontHeightInPoints((short)20);
        headerStyle.setFont(headerFont);
        //获取第一行的合并单元格
        Cell head = sheet.createRow(0).createCell(0);
        head.setCellValue("人员信息");
        head.setCellStyle(headerStyle);
        
        //封装表头
        String[] titles = {"用户ID","用户名","昵称","生日","性别"};
        Row titleRow = sheet.createRow(1);
        for(int i=0;i<titles.length;i++) {
            titleRow.createCell(i).setCellValue(titles[i]);
        }
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        
        //查询表中数据
        List<UserInfo> list = authService.findAllUser();
        for (int j=0;j<list.size();j++) {
            UserInfo userInfo = list.get(j);
            Row row = sheet.createRow(j+2);
            row.createCell(0).setCellValue(userInfo.getUid());
            row.createCell(1).setCellValue(userInfo.getUsername());
            row.createCell(2).setCellValue(userInfo.getName());
            row.createCell(3).setCellValue(sdf.format(new Date()));
            row.createCell(4).setCellValue(1);
        }
        
        ServletOutputStream os = response.getOutputStream();
        wb.write(os);
        wb.close();
    }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值