springboot业务功能实战(十三)poi导出并以web下载方式保存excel

举报
小鲍侃java 发表于 2021/09/09 23:37:16 2021/09/09
【摘要】 /** * 人员导出 * * @param sysSysUserVO * @throws IOException */ @PostMapping("/exportUser") @ApiOperation(value = "导出人员excel", notes = "导出人员excel")...

  
  1. /**
  2. * 人员导出
  3. *
  4. * @param sysSysUserVO
  5. * @throws IOException
  6. */
  7. @PostMapping("/exportUser")
  8. @ApiOperation(value = "导出人员excel", notes = "导出人员excel")
  9. public void
  10. exportUser(@ApiParam(name = "人员id", value = "人员id", required = false) @RequestBody List<SysUserVO> sysSysUserVO)
  11. throws IOException {
  12. List<SysUserVO> middleList = new ArrayList<>();
  13. // 查询用户详细信息
  14. for (SysUserVO sysUserVO : sysSysUserVO) {
  15. List<SysUserVO> resultListSysUser = sysUserService.querySysUserAll(sysUserVO);
  16. userInfoUtil.completionInformation(resultListSysUser.get(0));
  17. middleList.add(resultListSysUser.get(0));
  18. }
  19. // excle格式
  20. String[] headers = {"用户名", "姓名", "密码", "启动状态", "岗位", "角色", "所属部门", "手机", "邮箱", "身份证号"};
  21. HSSFWorkbook workbook = new HSSFWorkbook();
  22. HSSFSheet sheet = workbook.createSheet();
  23. // 设置列宽
  24. sheet.setDefaultColumnWidth((short)18);
  25. HSSFRow row = sheet.createRow(0);
  26. for (short i = 0; i < headers.length; i++) {
  27. // 创建单元格,每行多少数据就创建多少个单元格
  28. HSSFCell cell = row.createCell(i);
  29. HSSFRichTextString text = new HSSFRichTextString(headers[i]);
  30. // 给单元格设置内容
  31. cell.setCellValue(text);
  32. }
  33. for (int j = 0; j < middleList.size(); j++) {
  34. SysUserVO export = middleList.get(j);
  35. // 从第二行开始填充数据
  36. row = sheet.createRow(j + 1);
  37. List<String> datas = new ArrayList<>();
  38. String userName = export.getUsername();
  39. String trueName = export.getTureName();
  40. String password = export.getPassword();
  41. String status = String.valueOf(export.getIsEnabled());
  42. String postName = export.getPostName();
  43. String roleName = export.getRoleName();
  44. String organName = export.getOrganizationName();
  45. String phone = export.getMobile();
  46. String email = export.getEmail();
  47. String identityCard = export.getIdentityCard();
  48. datas.add(userName);
  49. datas.add(trueName);
  50. datas.add(password);
  51. datas.add(status);
  52. datas.add(postName);
  53. datas.add(roleName);
  54. datas.add(organName);
  55. datas.add(phone);
  56. datas.add(email);
  57. datas.add(identityCard);
  58. for (int k = 0; k < datas.size(); k++) {
  59. String string = datas.get(k);
  60. HSSFCell cell = row.createCell(k);
  61. HSSFRichTextString richString = new HSSFRichTextString(string);
  62. HSSFFont font3 = workbook.createFont();
  63. // 定义Excel数据颜色,这里设置为蓝色
  64. font3.setColor(HSSFColor.BLUE.index);
  65. richString.applyFont(font3);
  66. cell.setCellValue(richString);
  67. }
  68. }
  69. String fileName = "人员导出.xls";
  70. // 导出
  71. HttpServletResponse response =
  72. ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();
  73. RequestAttributes requsetAttributes = RequestContextHolder.currentRequestAttributes();
  74. HttpServletRequest request = ((ServletRequestAttributes)requsetAttributes).getRequest();
  75. // 获得浏览器代理信息
  76. final String userAgent = request.getHeader("USER-AGENT");
  77. // 判断浏览器代理并分别设置响应给浏览器的编码格式
  78. if (StringUtils.contains(userAgent, "MSIE") || StringUtils.contains(userAgent, "Trident")) {
  79. // IE浏览器
  80. fileName = URLEncoder.encode(fileName, "UTF-8");
  81. } else if (StringUtils.contains(userAgent, "Mozilla")) {
  82. // google,火狐浏览器
  83. fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
  84. } else {
  85. // 其他浏览器
  86. fileName = URLEncoder.encode(fileName, "UTF-8");// 其他浏览器
  87. }
  88. // 设置HTTP响应头
  89. response.reset();
  90. // 重置 如果不在页面上显示而是下载下来 则放开注释
  91. response.setContentType("application/octet-stream");
  92. response.addHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");
  93. OutputStream os = response.getOutputStream();
  94. workbook.write(os);
  95. os.close();
  96. }

文章来源: baocl.blog.csdn.net,作者:小黄鸡1992,版权归原作者所有,如需转载,请联系作者。

原文链接:baocl.blog.csdn.net/article/details/115063026

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。