js table 导出excel

说明

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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 不支持上传文件,所以就复制过来了。作者信息什么的都没删。对前端基本属于一窍不通,所以没有任何修改,反正用着没问题就...
    全栈在路上阅读 6,036评论 0 2
  • 在很多情况下我们用 input[type="file"] 上传图片的时候都希望有一个预览效果,最后才会将表单一起提...
    Sharise_Mo佩珊阅读 9,003评论 8 11
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,447评论 1 10
  • 如果你是蓝天 我愿是一片云彩 永远伴随着你 飘游在你的身边 为你变幻出 一副副千姿百态的画卷 如果你是大海 我愿是...
    文采乐阅读 3,106评论 4 9
  • 容我择日疯,来年撞日死,这几天很喜欢这句话,尤其是现在各种复习不下去,但还是要加油
    我爱芙蓉酥阅读 1,166评论 0 0

友情链接更多精彩内容