js实现Excel导出功能

  1. 使用get方式请求后台接口,能获取到导出文件的地址,此时就相当于浏览器打开一个新的链接

    <button type="button" id="export" class="btn"><i class="fa fa-download"></i>  导出</button>
    
     // 导出功能
    $('#export').on('click',function () {
    	/**
    	*这里是我拼接请求数据,具体请求数据看自己需求
    	*/
        var new_partsName = $('#addPartsName').val(); //配件名
        var brandName = $('#brandName').val(); //配件品牌
        var partsType = $('#partsType').val(); //品牌型号
        var partsUnit = $('#partsUnit').val(); //配件单位
        var purchasePrice = $('#purchasePrice').val(); //配件单价
        var laborCost = $('#laborCost').val(); //人工费
        var price = $('#price').val(); //配件费
        var partsPeriod = $('#partsPeriod').val(); //配件周期
        var addStatus = $('#addStatus').val(); //状态
        var isUse = $('#isUse').val(); //是否常用
        var remark=$('#addRemark').val() || null;
        var imgArr=[];
        var liNode=$('#uploadImgBox').find('li');
        for(var i=0;i<liNode.length;i++){
            imgArr.push($(liNode[i]).find('img').attr('src'));
        }
        // 请求参数
        data = {
            user_id: win.utils.getCookie('user_id'),
            session: win.utils.getCookie('session'),
            firstTypeId: $('#firstTypeName').val() || '',
            firstTypeName:$('#firstTypeName').find("option:selected").text()=="请选择一级配件类型"?'':$('#firstTypeName').find("option:selected").text(),
            secondTypeId: $('#secondTypeName').val() || '',
            secondTypeName:$('#secondTypeName').find("option:selected").text()=="请选择二级配件类型"?'':$('#secondTypeName').find("option:selected").text(),
            partsName:new_partsName || '',
            brandName: brandName || '',
            partsType:partsType || '',
            unit:partsUnit || '',
            purchasePrice:purchasePrice || '',
            laborCost:laborCost || '',
            price:price || '',
            partsPeriod:partsPeriod || '',
            picUrl:'',
            status:addStatus || '',
            isUse:isUse || '',
            remark:remark || ''
        };
        var dataArr=[];
        for(var key in data){
            dataArr.push(key+'='+data[key]);
        }
        /**
    	*以上是我拼接请求数据,具体请求数据看自己需求
    	*/
    	
        window.location.href=win.utils.services.exportPartsList+'?'+dataArr.join('&');
    });
    
  2. 通过xhr请求导出

    //dataStr为参数,即导出数据的条件
    function download(dataStr) {
        var url = win.utils.services.exportPartsList+'?'+dataStr;
        var xhr = new XMLHttpRequest();
        xhr.open('get', url, true);        // 也可以使用POST方式,根据接口
        xhr.responseType = "blob";    // 返回类型blob
        // 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑
        xhr.onload = function () {
            // 请求完成
            if (this.status === 200) {
                // 返回200
                var blob = this.response;
                var reader = new FileReader();
                reader.readAsDataURL(blob);    // 转换为base64,可以直接放入a表情href
                reader.onload = function (e) {
                    // 转换完成,创建一个a标签用于下载
                    var a = document.createElement('a');
                    a.download = 'data.xlsx';
                    a.href = e.target.result;
                    $("body").append(a);    // 修复firefox中无法触发click
                    a.click();
                    $(a).remove();
                }
            }
        };
        // 发送ajax请求
        xhr.send()
    }
    
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值