美文网首页
js table 导出excel

js table 导出excel

作者: 羊羊羊0703 | 来源:发表于2017-09-05 15:31 被阅读0次

说明

1.js转excel大致有两种方法:table直接转或者整理出需要的excel数据对象再转,本例子是通过table直接转的。
2.网上的代码粘贴过来后发现没法添加文件后缀,用户体验不好,尝试了一下,将两种方式相结合就可以达到我的目标了。

定义


.factory('Excel', function($window) {
        var uri = 'data:application/vnd.ms-excel;base64,',
            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]--></head><body><table>{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 {
            tableToExcel: function(table, name) {
                if(!table.nodeType) table = document.getElementById(table)
                var ctx = {
                    worksheet: name || 'Worksheet',
                    table: table.innerHTML
                }
                //var blob = new Blob([data], {type: "application/vnd.ms-excel"});
                var objectUrl = uri + base64(format(template, ctx));
                var a = document.createElement('a');
                document.body.appendChild(a);
                a.setAttribute('style', 'display:none');
                a.setAttribute('href', objectUrl);
                a.setAttribute('download', name);
                a.click();
                URL.revokeObjectURL(objectUrl);
            }
        }
    })

调用


Excel.tableToExcel(tableId, fileName);

相关文章

网友评论

      本文标题:js table 导出excel

      本文链接:https://www.haomeiwen.com/subject/sygujxtx.html