前端如何在项目中导出excel表格

497 阅读1分钟

后端生成表格地址

后端直接返回一个excel表格地址,前端点击下载即可。但是这种方式,会导致后端的excel越存越多,造成冗余。不过如果是固定模板表格内容不会变得情况下,当然解决方案就是后端写一个定时器,每个一段时间清楚冗余的表格数据。

后端返回一个blod流

后端返回一个blob流文件,这样的话,是一次性的流文件,前端通过new Blod生成一个流对象,然后再通过a链接模拟点击效果,后端导出需要在请求头里设置responseType: blog


  // 导出函数
  
  async outExcelData() {
      let params = ***  //后端所需入参
      const res = await export(params);  //接口封装函数
      const blob = new Blob([res]);  // 后端生成返回一个流文件,前端生成流
      
      const a = document.createElement("a"); //创建一个<a></a>标签
      
      const href = window.URL.createObjectURL(blob); // 将流文件生成 href属性
      
      a.href = href  //将文件流生成的href传给a.href属性
      
      a.download = "数据xxx.xlsx"; //设置文件名
      
      a.style.display = "none";  // 隐藏起来a标签
      
      document.body.appendChild(a); // 将a标签追加到文档对象中
      
      a.click(); // 模拟点击了a标签,会触发a标签的href的读取,浏览器就会自动下载了
  
      a.remove(); // 点击下载后移除a链接
      
    }
    

前端处理 通过xlsx插件

这种形式可以通过前端实现导出excel表格,只需要拿到后端返回的数据,然后对数据进行加工即可,但是这种形式不利于数据量较大的表格导出,毕竟调用的还是浏览器的执行能力,具体如何使用,自行百度,方法太多,总有适合你的需求方法。