前端table 导出excel

 //table 导出 excel
    //替换table数据和worksheet名字
    format : function(s, c) {
        return s.replace(/{(\w+)}/g,
            function (m, p) {
                return c[p];
            });
    },
    //base64转码
    base64: function (s) {
        return window.btoa(unescape(encodeURIComponent(s)))
    },
    exportExcel: function () {


        tableToExcel('tableid', '统计报表');


        function tableToExcel(tableid, sheetName) {
            var uri = 'data:application/vnd.ms-excel;base64,';
            var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"' +
                'xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>'
                + '<x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets>'
                + '</x:ExcelWorkbook></xml><![endif]-->' +
                ' <style type="text/css">' +
                'table td,table th {' +
                'border: 1px solid #000000;' +
                'width: 200px;' +
                'height: 30px;' +
                'text-align: center;' +
                'font-size: 16px;'+
                'font-family: "Microsoft Yahei";'+
                ' }' +
               '#title {'+
               'padding: 6px;'+
               'text-align: center;'+
               'font-size: 22px;'+
                'font-family: "Microsoft Yahei";'+
               'border-left: 2px solid #aee1ff;'+
               'border-top: 2px solid #aee1ff;'+
               'border-right: 2px solid #aee1ff;'+
               'border-bottom: 1px solid #aee1ff;'+
                '}'+
                '</style>' +
                '</head><body ><table class="excelTable"><tr><td id="title" colspan="12">{worksheet}</td></tr>{table}</table></body></html>';
            if (!tableid.nodeType) tableid = document.getElementById(tableid);
            var ctx = {worksheet: sheetName || 'Worksheet', table: tableid.innerHTML};
            window.location.href =  uri + searchObj.base64(searchObj.format(template, ctx));
        }
        
    }
};

window.btoa() 在ie8下不支持,这种方式导出只应用于数据量小的情况下,                                                          ---------备忘笔记

我现在做的项目是需要导出一个复杂的表格成word,还要支持ie8 ,以前的方式是用freeMarker 去做的,考虑到维护太困难(主要是觉得前端样式改变,freemarker 模板要重做,而且数据还特别多),而且上述方式不支持,,,这种情况下想到了一个办法,把模板(word的模板,如果要导成excel要用excel模板)放在后台去维护,前端传渲染后的table代码到后台,通过后台拼接写到文件流下载。 --- 2018/7/3

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值