forlp

js生成Excel表格,纯工具js。参考了http://blog.csdn.net/aa122273328/article/details/50388673网友的代码。

function utils($) {
    var $=$;

    /**
     * 
     * @param cols  数组类型   格式[\'序号\',\'姓名\',\'地址\']
     * @Param colsFiled     格式{\'序号\':\'id\',\'姓名\':\'name\',\'地址\':\'address\'}
     * @param data  数组类型   格式[{\'id\':1,\'name\':张三,\'address\':成都},{\'id\':2,\'name\':李四,\'address\':成都}]
     * @returns
     */
    this.createExcle=function (cols,colsFiled,data){

        var table = $(\'<table></table>\');
        var th = $(\'<tr></tr>\');

        var index = 0;

        for(var i = 0; i < data.length; i++){

            var tr = $(\'<tr></tr>\');
            var values = data[i];

            for(var j = 0; j < cols.length; j++){

                var fliedName = cols[j];
                var flied = colsFiled[fliedName];
                var value = values[flied];
                var td = $(\'<td></td>\');
                td.html(value);

                if(index == 0){
                    var tdTh = $(\'<td></td>\');
                    tdTh.html(fliedName);
                    th.append(tdTh);
                }

                tr.append(td);
            }
            if(index == 0){
                table.append(th);
            }
            table.append(tr);
            index++;
        }
        table.attr(\'id\',\'datatab\');
        table.attr("style", "display: none");
        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))  
                }  
            })()

            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\';  
                }  
            }
        } 
    }
}

 

分类:

技术点:

相关文章:

  • 2021-08-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-08
  • 2021-10-12
  • 2021-12-28
  • 2021-08-01
猜你喜欢
  • 2022-12-23
  • 2021-08-07
  • 2021-08-01
  • 2021-08-13
  • 2021-06-22
  • 2021-08-22
相关资源
相似解决方案