Tp5 前端jquery导出表格(兼容各个版本excel)

3 篇文章 0 订阅

Tp5 前端jquery导出表格

1.引用插件,我存在百度网盘xlsx文件中,有需求的可以私信我
在这里插入图片描述
2.部分js代码

function sheet2blob(sheet, sheetName) {
    sheetName = sheetName || 'sheet1';
    var workbook = {
        SheetNames: [sheetName],
        Sheets: {}
    };
    workbook.Sheets[sheetName] = sheet;
    // 生成excel的配置项
    var wopts = {
        bookType: 'xlsx', // 要生成的文件类型
        bookSST: false, // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
        type: 'binary'
    };
    var wbout = XLSX.write(workbook, wopts);
    var blob = new Blob([s2ab(wbout)], {type:"application/octet-stream"});
    // 字符串转ArrayBuffer
    function s2ab(s) {
        var buf = new ArrayBuffer(s.length);
        var view = new Uint8Array(buf);
        for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
        return buf;
    }
    return blob;
}
function openDownloadDialog(url, saveName) {
    if(typeof url == 'object' && url instanceof Blob)
    {
        url = URL.createObjectURL(url); // 创建blob地址
    }
    var aLink = document.createElement('a');
    aLink.href = url;
    aLink.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
    var event;
    if(window.MouseEvent) event = new MouseEvent('click');
    else
    {
        event = document.createEvent('MouseEvents');
        event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    }
    aLink.dispatchEvent(event);
}
window.handleExportToXLSX = function(dataList, titleList, fileName) {
    let that = this,
        vData = [titleList],
        tempData = [];

    dataList.forEach(function(it) {
        if (Array.isArray(it)) {
            vData.push(it);
        } else {
            for (let key in it) {
                tempData.push(it[key]);
            }
            vData.push(tempData);
            tempData = [];
        }
    })
    let sheet = XLSX.utils.aoa_to_sheet(vData);
    openDownloadDialog(sheet2blob(sheet),fileName+'.xlsx');
}

3.服务端接口查询数据并返回给前端

 public function daochu(){

        $data = Db::name('user')->field('userid,nickname,rmb')->order('rmb desc')->select();
        if($data){
            $this->getBackTo('success',0,$data);
        }else{
            $this->getBackTo('fail',1);
        }

    }

4.前端页面代码

  $.ajax({
                        type: "post",
                        dataType: 'text',
                        data: {"start_time": start_time,"end_time": end_time,"status": status},
                        url: domain + "/admin/card/daochu",//目标地址
                        success: function (res) {
                            var res = JSON.parse(res);
                            if (res.success == 0) {
                                handleExportToXLSX(res.data,['ID','卡号','金额','状态','创建时间','使用者ID','使用时间'],'兑换卡列表');
                            } else {
                                alert('导出失败');
                            }

                        },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值