zoukankan      html  css  js  c++  java
  • Js导出页面数据

    场景:导出当前页数据,不通过后台再次下载数据

    代码:

    /**
     *@param fileName 导出文件名
     * @param id 页面上需要导出数据的组件ID
     * @returns
     */
    var createExcle =  function (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>{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}
                      // window.location.href = uri + base64(format(template, ctx))
                    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();
                }
            })()

            if(getExplorer()=='ie')
            {
                var curTbl = document.getElementById(tableid);
                var oXL = new ActiveXObject("Excel.Application");
                var oWB = oXL.Workbooks.Add();
                var xlsheet = oWB.Worksheets(1);
                var sel = document.body.createTextRange();
                sel.moveToElementText(curTbl);
                sel.select();
                sel.execCommand("Copy");
                xlsheet.Paste();
                oXL.Visible = true;

                try {
                    var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");
                } catch (e) {
                    print("Nested catch caught " + e);
                } finally {
                    oWB.SaveAs(fname);
                    oWB.Close(savechanges = false);
                    oXL.Quit();
                    oXL = null;
                    idTmr = window.setInterval("Cleanup();", 1);
                }

            }
            else
            {
                tableToExcel(tableid)
            }

            function Cleanup() {
                window.clearInterval(idTmr);
                CollectGarbage();
            }

            function  getExplorer() {
                var explorer = window.navigator.userAgent ;
                //ie
                if (explorer.indexOf("MSIE") >= 0) {
                    return 'ie';
                }
                //firefox
                else if (explorer.indexOf("Firefox") >= 0) {
                    return 'Firefox';
                }
                //Chrome
                else if(explorer.indexOf("Chrome") >= 0){
                    return 'Chrome';
                }
                //Opera
                else if(explorer.indexOf("Opera") >= 0){
                    return 'Opera';
                }
                //Safari
                else if(explorer.indexOf("Safari") >= 0){
                    return 'Safari';
                }
            }
        }
    }

  • 相关阅读:
    servlet-响应信息
    社会学系列:《乡土中国》读书笔记
    文学系列:《叶之震颤》读书笔记
    《娱乐至死》读书笔记
    畅销书系列:《引爆点》、《异类》、《从0到1》
    大学《管理学》教材笔记
    心理学系列:《乌合之众》读书笔记
    心理学系列:《我们内心的冲突》、《亲密关系》、《犯罪心理学》、《态度改变与社会影响》读书笔记
    政史系列:《社会契约论》读书笔记
    音乐系列:2018年滚石琴行木吉他学习笔记
  • 原文地址:https://www.cnblogs.com/qingchun-com/p/8167283.html
Copyright © 2011-2022 走看看