实现导出excel功能

128 阅读1分钟

实现导出excel功能 需要 后端提供 url 地址 然后进行数据流的转换

exportExcel(url, params = {}, title) {
        return new Promise((resolve, reject) => {
            get(url, {
                params,
                responseType: 'blob',
                headers: {
                    backdoor: 1,
                },
            }).then(
                (res) => {
                    const blob = new Blob([res], {
                        type: 'application/vnd.ms-excel',
                    });
                    console.log(blob);
                    const fileName = `${title}.xls`;
                    if (window.navigator.msSaveOrOpenBlob) {
                        navigator.msSaveBlob(blob, fileName);
                    } else {
                        var link = document.createElement('a');
                        link.href = window.URL.createObjectURL(blob);
                        link.download = fileName;
                        link.click();
                        // 释放内存
                        window.URL.revokeObjectURL(link.href);
                    }
                    resolve(res);
                },
                (err) => {
                    reject(err);
                }
            );
        });
    },

调用此方法即可

 commonApi.exportExcel(`后端提供的url/export`, params(传参), '文件名');

还有 post 方法

// post请求下载
    exportPostExcel(url, data = {}, title) {
        return new Promise((resolve, reject) => {
            post(url, {
                data,
                responseType: 'blob',
                headers: {
                    backdoor: 1,
                },
            }).then(
                (res) => {
                    const blob = new Blob([res], {
                        type: 'application/vnd.ms-excel',
                    });
                    console.log(blob);
                    const fileName = `${title}.xlsx`;
                    if (window.navigator.msSaveOrOpenBlob) {
                        navigator.msSaveBlob(blob, fileName);
                    } else {
                        var link = document.createElement('a');
                        link.href = window.URL.createObjectURL(blob);
                        link.download = fileName;
                        link.click();
                        // 释放内存
                        window.URL.revokeObjectURL(link.href);
                    }
                    resolve(res);
                },
                (err) => {
                    reject(err);
                }
            );
        });
    },

调用

commonApi.exportPostExcel(
                `后端提供的url/export`,
                params,
                '文件名'
            );