zoukankan      html  css  js  c++  java
  • 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);
    
  • 相关阅读:
    UVALive-8077 Brick Walls 找规律
    UVALive-8079 Making a Team 排列组合公式化简
    UVALive-8072 Keeping On Track 树形dp 联通块之间缺失边的个数
    HDU-5534 Partial Tree 完全背包 设定初始选择
    HDU-2844 Coins 多重背包 物品数量二进制优化
    CodeForces-366C Dima and Salad 对01背包的理解 多个背包问题
    HDU-2955 Robberies 浮点数01背包 自变量和因变量位置互换
    UVALive-7197 Axles 动态规划 多个背包问题
    广义表(C++实现)
    稀疏矩阵及稀疏矩阵的压缩存储
  • 原文地址:https://www.cnblogs.com/axingya/p/14601794.html
Copyright © 2011-2022 走看看