Java使用SpringBoot导出Excel(前端+后端)

今天遇到一个需求,就是把列表信息导出成excel。

其实这个需求比较简单。但我前端代码那块浪费了我一段时间。

本来之前做过几次。。但因为在上家公司做的。那个项目代码找不到了。

好了。废话不多说。。上代码首先贴一下后端的代码。 直接使用hutools的开源jar包进行生成。

Controller 层调用代码。巨简单。这里就不说了

 /**
   * 导出excel
   * @return
   */
  @RequestMapping(value = "/excelWriter")
  @Permission
  public String excelWriter ( PileOrderQueryVo pileOrderQueryVo, HttpServletResponse response) {
  
    List<Bean> pileOrderExcelVos = new ArrayList<Bean>();
    pileOrderService.excelWriter(Bean,response);
    return null;
  }

@Override
  public void excelWriter (List<Bean> list, HttpServletResponse response) {
    BigExcelWriter writer = (BigExcelWriter) ExcelUtil.getBigWriter();

    ServletOutputStream out = null;
    try {

      //自定义标题别名
      writer.addHeaderAlias("beanName", "显示名字");
      //设置宽度
      int[] column = {0, 3, 4,5,10, 11, 12};
      int width = 30 * 256;
      for (int i : column) {
        writer.getSheet().setColumnWidth(i, width);
      }

      writer.write(list, true);
      response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
      response.setHeader("Content-Disposition", "attachment;filename=OrderData.xlsx");
      out = response.getOutputStream();
      writer.flush(out, true);
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      writer.close();
      IoUtil.close(out);
    }
  }

现在开始贴一下 前端的代码。
这里我开始打算用ajax,但搞了半天。最后采用的这种方式。
完美解决

Order.excel = function () {

  var html = '
确认导出excel?
'
; layer.confirm(html, { btn: ['确认', '取消'], shade: false, //不显示遮罩 }, function (index) { layer.close(index); //获取自己的参数。 使用post方式提交 var queryData = {}; //开始请求 var url = 自己的url; var xhr = new XMLHttpRequest(); var data = encodeFormData(queryData); xhr.open('post', url, true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') xhr.responseType = "blob"; // 返回类型blob // 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑 xhr.onload = function () { // 请求完成 if (this.status == 200) { // 返回200 var blob = this.response; var reader = new FileReader(); reader.readAsDataURL(blob); // 转换为base64,可以直接放入a表情href reader.onload = function (e) { // 转换完成,创建一个a标签用于下载 var a = document.createElement('a'); a.download = 'fileName.xlsx'; a.href = e.target.result; $("body").append(a); // 修复firefox中无法触发click a.click(); $(a).remove(); } } }; // 发送请求 xhr.send(data); } ); };

你可能感兴趣的:(Java,java)