poi导出并在web下载excel

/**
     * 人员导出
     *
     * @param sysSysUserVO
     * @throws IOException
     */
    @PostMapping("/exportUser")
    @ApiOperation(value = "导出人员excel", notes = "导出人员excel")
    public void
        exportUser(@ApiParam(name = "人员id", value = "人员id", required = false) @RequestBody List<SysUserVO> sysSysUserVO)
            throws IOException {
        List<SysUserVO> middleList = new ArrayList<>();
        // 查询用户详细信息
        for (SysUserVO sysUserVO : sysSysUserVO) {
            List<SysUserVO> resultListSysUser = sysUserService.querySysUserAll(sysUserVO);
            userInfoUtil.completionInformation(resultListSysUser.get(0));
            middleList.add(resultListSysUser.get(0));
        }
        // excle格式
        String[] headers = {"用户名", "姓名", "密码", "启动状态", "岗位", "角色", "所属部门", "手机", "邮箱", "身份证号"};
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet();
        // 设置列宽
        sheet.setDefaultColumnWidth((short)18);
        HSSFRow row = sheet.createRow(0);
        for (short i = 0; i < headers.length; i++) {
            // 创建单元格,每行多少数据就创建多少个单元格
            HSSFCell cell = row.createCell(i);
            HSSFRichTextString text = new HSSFRichTextString(headers[i]);
            // 给单元格设置内容
            cell.setCellValue(text);
        }
        for (int j = 0; j < middleList.size(); j++) {
            SysUserVO export = middleList.get(j);
            // 从第二行开始填充数据
            row = sheet.createRow(j + 1);
            List<String> datas = new ArrayList<>();
            String userName = export.getUsername();
            String trueName = export.getTureName();
            String password = export.getPassword();
            String status = String.valueOf(export.getIsEnabled());
            String postName = export.getPostName();
            String roleName = export.getRoleName();
            String organName = export.getOrganizationName();
            String phone = export.getMobile();
            String email = export.getEmail();
            String identityCard = export.getIdentityCard();
            datas.add(userName);
            datas.add(trueName);
            datas.add(password);
            datas.add(status);
            datas.add(postName);
            datas.add(roleName);
            datas.add(organName);
            datas.add(phone);
            datas.add(email);
            datas.add(identityCard);
            for (int k = 0; k < datas.size(); k++) {
                String string = datas.get(k);
                HSSFCell cell = row.createCell(k);
                HSSFRichTextString richString = new HSSFRichTextString(string);
                HSSFFont font3 = workbook.createFont();
                // 定义Excel数据颜色,这里设置为蓝色
                font3.setColor(HSSFColor.BLUE.index);
                richString.applyFont(font3);
                cell.setCellValue(richString);
            }
        }
        String fileName = "人员导出.xls";
        // 导出
        HttpServletResponse response =
            ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();
        RequestAttributes requsetAttributes = RequestContextHolder.currentRequestAttributes();
        HttpServletRequest request = ((ServletRequestAttributes)requsetAttributes).getRequest();
        // 获得浏览器代理信息
        final String userAgent = request.getHeader("USER-AGENT");
        // 判断浏览器代理并分别设置响应给浏览器的编码格式
        if (StringUtils.contains(userAgent, "MSIE") || StringUtils.contains(userAgent, "Trident")) {
            // IE浏览器
            fileName = URLEncoder.encode(fileName, "UTF-8");
        } else if (StringUtils.contains(userAgent, "Mozilla")) {
            // google,火狐浏览器
            fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
        } else {
            // 其他浏览器
            fileName = URLEncoder.encode(fileName, "UTF-8");// 其他浏览器
        }
        // 设置HTTP响应头
        response.reset();
        // 重置 如果不在页面上显示而是下载下来 则放开注释
        response.setContentType("application/octet-stream");
        response.addHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");
        OutputStream os = response.getOutputStream();
        workbook.write(os);
        os.close();
    }

猜你喜欢

转载自blog.csdn.net/qq_20143059/article/details/115063026