xlsx.js excel文件下载

excel 文件的下载

  1. 前端
// 导出
const exportExcel = () => {
  axios
    .post(
      '/comment/export',
      {},
      {
        responseType: 'blob'
      }
    )
    .then((res) => {
      const stream = res.data // 后端用stream返回Excel文件
      const blob = new Blob([stream])

      // 前端获取业务码,成功执行正常业务
      const downloadElement = document.createElement('a')
      const href = window.URL.createObjectURL(blob) // 创建下载的链接
      downloadElement.href = href
      downloadElement.download = '测试下载.xlsx' // 下载后文件名
      document.body.appendChild(downloadElement)
      downloadElement.click() // 点击下载
      document.body.removeChild(downloadElement) // 下载完成移除元素
      window.URL.revokeObjectURL(href) // 释放掉blob对象
    })
}
  1. 后端导出 excel
const xlsx = require('xlsx')

exportExcel: async (ctx) => {
  const jsonData = [
    { username: 'jiang', age: 40 },
    { username: 'jancy', age: 30 },
    { username: 'test', age: 20 }
  ]
  const ws = xlsx.utils.json_to_sheet(jsonData)
  const wb = xlsx.utils.book_new() // 创建一个空的workbook
  xlsx.utils.book_append_sheet(wb, ws, 'Sheet1')
  xlsx.writeFileSync(wb, '导出测试.xlsx')

  //类型
  ctx.type = '.xlsx'
  //请求返回,生成的xlsx文件
  ctx.body = fs.readFileSync('导出测试.xlsx')
  //请求返回后,删除生成的xlsx文件,不删除也行,下次请求回覆盖
  fs.unlink('导出测试.xlsx', (err) => {
    if (err) {
      console.log(err)
      throw err
    }
  })
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容