前端导出excel

比较菜,大家参考一下就好.


//使用windos.location导出,this.imgUrl.imgUrl为全局的请求路径,自己设置  item是传过来的值
window.location.href =this.imgUrl.imgUrl+`/report/downloadExcel?id=${item.id}` 
// 导出
    async excel() {
      try {
        const token = sessionStorage.getItem('token')
        const res = await this.$axios.get(
            this.imgUrl.imgUrl + '/report/downloadBasicListExcel',
            {
           params: {
           releaseTime: this.form.releaseTime ? this.form.releaseTime : null, 
           releaseEndTime: this.form.releaseEndTime ? this.form.releaseEndTime : null, 
           sceneLine: this.form.sceneLine ? this.form.sceneLine : null, 
           abilityType: this.form.abilityType ? this.form.abilityType : null, 
           sceneName: this.form.sceneName ? this.form.sceneName : null, 
           operationName: this.form.operationName? this.form.operationName: null, 
           reqAbilityMpName: this.form.reqAbilityMpName? this.form.reqAbilityMpName:null, 
           abilityPath: this.form.abilityPath ? this.form.abilityPath : null, 
           appName: this.form.appName ? this.form.appName : null, //系统名称
           },
           timeout: this.timeout * 1000,
           headers: {
                'content-type': 'application/json',
                'timeout': 50 * 1000,
                'access-token': token || null,
                // 'tenant': tenant || 1,
                'Accept': 'application/json, text/plain',
              },
              responseType: 'blob',
            }
        )

        // 没数据的时候,根据后端返回的文件流的size判断
        if (res.data.size === 0) {
          return message.warn('当前条件没有数据')
        }
        //res.data为相应的文件流
        const link = document.createElement('a')
        const blob = new Blob([res.data], {type: 'application/vnd.ms-excel'})
        link.style.display = 'none'
        link.href = URL.createObjectURL(blob)
        // 导出的文件名
        link.download = '能力用量清单'
        document.body.appendChild(link)
        link.click()
        document.body.removeChild(link)
      } catch (err) {
        console.log('err is ->', err)
        return message.error('导出时间超时')
      }
    },

使用$axios没有走请求拦截器,有拦截器的可以使用拦截器的那个,不然就是自己添加一下相应的token,请求时间啥的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值