layui 复杂表头多层表头的表格数据非后台导出excel

用过layui table的都了解,layui的表格自带导出功能,只要在属性toolbar里配置即可。
如果嫌toolbar里的导出按钮不够美观,layui也友好的提供了自行定义按钮后调用导出页面数据的方法,详见:官方文档
遗憾的是:该方法暂时并不支持对多层表头的导出。
而多层复杂表头在很多系统中都有体现,而若不想通过后台代码去做导出,只在前端页面上该如何做呢?



1 史前

1.1 直接使用(两种方式)

1.下载插件:
地址:github table2excel
下载下来项目后,在项目的dist中就有该js,在自己表格html页面引用即可使用。

链接:百度云下载js
提取码:1f52

/**
 * 使用方法该js的方法(两行代码)
 */
let table2excel = new Table2Excel();
// 传入你的tableId即可导出
table2excel.export($('#tableId'), "your filename");
  1. 一个解析页面元素方法:复制走即可使用
/**
 * 
 * @param id:表格的id
 * @param fileName:导出的excel的名字
 */
 function  exportForExcle(id,fileName){
   
        var table = $(document.getElementById(id)).clone();
        table.attr('id','datatab');
        table.appendTo('body');
        method5('datatab');
        datatab.remove();
        function method5(tableid) {
   
            var idTmr;
            var tableToExcel = (function() {
   
                var uri = 'data:application/vnd.ms-excel;base64,',
                    template = '<html><head><meta charset="UTF-8"></head><body><table border="1px">{table}</table></body></html>',
                    base64 = function(s) {
    return window.btoa(unescape(encodeURIComponent(s))) },
                    format = function(s, c) {
   return s.replace(/{(\w+)}/g, function(m, p) {
    return c[p]; }) }
                return function(table, name) {
   
                    if (!table.nodeType) table = document.getElementById(table)
                    var ctx = {
   worksheet: name || 'Worksheet', table: table.innerHTML}
                    var aTag = document.createElement('a');
                    aTag.download = fileName;
                    aTag.href = uri + base64(format(template, ctx));
                    document.body.appendChild(aTag);
                    aTag.onclick = function () {
   
                        document.body.removeChild(aTag);
                    }
                    aTag.click
评论 108
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值