前端处理二进制流文件导出为excel表

这篇具有很好参考价值的文章主要介绍了前端处理二进制流文件导出为excel表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

将后端返回的二进制流文件 导出为excel表
用的时候直接调用showConfirm函数即可
最后效果
前端处理二进制流文件导出为excel表

export function getExport(param) {
    get('/api/xdata/v1/basic/auth/excel', { ...param }).then((res) => {
        // let name = getFileName(url);

        let name = 'export.xlsx';
        console.log('res', res);
        // let u = window.URL.createObjectURL(new Blob([res]));
        const type = 'application/vnd.ms-excel;charset=utf-8'; //excel文件
        let u = window.URL.createObjectURL(new Blob([res], { type: type }));

        let a = document.createElement('a');
        a.download = name;
        a.href = u;
        console.log(a);
        a.style.display = 'none';
        document.body.appendChild(a);
        a.click();
        a.remove();
        // setTimeout(myDlWarn, 0);
    });
}
export function showConfirm(text, exportParams) {
    confirm({
        title: `您确认要导出${text}`,
        icon: <ExclamationCircleOutlined />,
        content: '',
        okText: '确认',
        okType: 'primary',
        cancelText: '取消',
        onOk() {
            getExport(exportParams);
        },
        onCancel() {
            console.log('Cancel');
        },
    });
}

get接口是自己封装的,封装如下文章来源地址https://www.toymoban.com/news/detail-511497.html

/**
 * 从 cookie 中获取数据
 * @param {string} cname cname
 */
export const getCookie = (cname) => {
    var name = cname + '=';
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i].trim();
        if (c.indexOf(name) === 0) {
            return c.substring(name.length, c.length);
        }
    }
    return '';
};
const ajax = (method, url, data, options = {}) => {
    const isPost = method === 'post';
    const isPut = method === 'put';
    const isPatch = method === 'patch';
    const isGet = method === 'get';

    const sentOptions = {
        url,
        method,
        withCredentials: true, // 允许跨域
        credentials: 'include', 
        headers: {
            'X-Request-By': 'ERApplication',
            'X-Requested-With': 'XMLHttpRequest',
            'X-Region': 'bj',
            'X-From': 'web',
        },
        ...options,
    };

    if (isPost || isPatch) {
        sentOptions.headers['Content-Type'] = 'application/x-www-form-urlencoded';
        sentOptions.data = JSON.stringify(data);
    } else if (isPut) {
        sentOptions.data = JSON.stringify(data);
    } else if (isGet) {
        sentOptions.headers['Content-Type'] = 'utf-8';
        sentOptions.params = data;
    }

    return new Promise((resolve, reject) => {
        axios(sentOptions)
            .then((response) => {
                resolve(response.data);
            .catch((error) => {
                console.log('catch');
                reject(error);
            });
    });
};
export const get = (url, data = {}) => {
    return ajax('get', BASE_URL + url, data, { responseType: 'blob' });
};

到了这里,关于前端处理二进制流文件导出为excel表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包