vue2.0通过Axios导出excel文件(及解决乱码问题)

如果传输的参数是对象形式:


api

// 下载测试
export const downLoadExcal = (data) => {
  return instancejava.get("/sso/download",{ 
    data,responseType: 'blob'  // 需要制定类型(这个写法如果还存在错误的话就改成-->{responseType:'blob'})
  });
};

如果传输的参数是fromdata格式:

export const downLoadExcal = (data) => {
  return instancejava.post("/files/getCompanyDayExcel",
    data,{responseType:'blob'}
  );
};

就接口位置不同,下面就相同了
index.vue文件

    downLoad(){
        downLoadExcal().then(res=>{  // 接口
            // let fileName = res.headers['content-disposition'].split('=')[1] // 命名
            // let suffix = fileName.slice(fileName.length-5,fileName.length)  // 切取.xsls后缀
            // let now = new Date().getTime(); // 时间戳
            // fileName = now+suffix   // 重命名=>时间戳+文件后缀
            // let objectUrl = URL.createObjectURL(new Blob([res.data])) // 文件地址
            // const link = document.createElement('a') //创建a标签用于文件下载
            // link.download = fileName // 文件名
            // link.href = objectUrl    //赋值下载路径
            // link.click()   //点击a标签触发
            // document.body.removeChild(link);//删除a标签

                //  或者直接命名
            let objectUrl = URL.createObjectURL(new Blob([res.data]))// 文件地址
            const link = document.createElement('a') //创建a标签用于文件下载
            link.download = new Date().getTime()+".xlsx"
            link.href = objectUrl   //赋值下载路径
            link.click()   //点击a标签触发
            document.body.removeChild(link);//删除a标签
        }).catch((err)=>{
            console.log(err)
        })
    }

网上还有另外一个方法

   let blob = new Blob([res], {type: "application/vnd.ms-excel"});//type是文件类,详情可以参阅blob文件类型
   let objectUrl = URL.createObjectURL(blob);//生成下载链接
   let a=document.createElement('a');//创建a标签用于文件下载
   a.href=objectUrl;//赋值下载路径
   a.download='数据表格.xls';//下载的文件名称(非必填)
   document.body.appendChild(a);//插入DOM树
   a.click();//点击a标签触发
   document.body.removeChild(a);//删除a标签

服务端的参数:

response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition","attachment;filename=" + fileName + EXCEL03_SUFFIX);
posted @ 2021-03-31 15:41  seekHelp  阅读(670)  评论(0)    收藏  举报