0%

ecxel导出

ecxel导出

ecxel导出

  • maven

    1
    2
    3
    4
    5
    <dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>4.5.9</version>
    </dependency>
  • 后端

    • controller接口

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      @ApiOperation(value = "数据导出--待完成", notes = "数据导出", httpMethod = "POST")
      @PostMapping(value = "/excel/export", headers = "Accept=application/octet-stream")
      public void export(@ApiParam HttpServletResponse response,@RequestBody String matrixId) {
      try {
      System.out.println(matrixId);
      bodyService.excelExport(response);
      } catch (Exception e) {
      log.error("批量导出失败!", e);
      }

      }
    • serviceImpl

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      /**
      * 矩阵管理-数据导出
      *
      * @param response
      */
      @Override
      public void excelExport(HttpServletResponse response) {
      // 创建excel表格数据
      ArrayList<Map<String, Object>> rows = createExcelData();

      ExcelWriter writer = ExcelUtil.getWriter(false);
      OutputStream out = null;

      try {
      // 一次性写出内容,强制输出标题
      writer.write(rows, true);
      // 矩阵名称 TODO
      String fileName = URLEncoder.encode("数据导出", "UTF-8");
      response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
      response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");
      out = response.getOutputStream();
      writer.flush(out, true);
      } catch (Exception e) {
      e.printStackTrace();
      } finally {
      writer.close();
      IoUtil.close(out);
      }
      }

      /**
      * 创建excel表格数据 TODO 1.添加隐藏列,校验动态列 2.下拉框
      *
      * @return
      */
      private ArrayList<Map<String, Object>> createExcelData() {

      // 创建excel表格数据
      Map<String, Object> row = new LinkedHashMap<>();
      row.put("序号", "1");
      row.put("组织单元编码", "A020");
      row.put("组织单元", "集团总部 / 人力资源部");
      row.put("岗位编码", "P001");
      row.put("岗位名称", "COE");

      ArrayList<Map<String, Object>> rows = CollUtil.newArrayList();
      rows.add(row);
      return rows;
      }
  • postMan测试

    img