美文网首页
xlsx.js excel文件下载

xlsx.js excel文件下载

作者: 漫漫江雪 | 来源:发表于2021-10-08 09:23 被阅读0次

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
    }
  })
}

相关文章

网友评论

      本文标题:xlsx.js excel文件下载

      本文链接:https://www.haomeiwen.com/subject/jkotoltx.html