• js导出到word、json、excel、csv


    tableExport.js
    ///*The MIT License (MIT)
    
    //Copyright (c) 2014 https://github.com/kayalshri/
    
    //Permission is hereby granted, free of charge, to any person obtaining a copy
    //of this software and associated documentation files (the "Software"), to deal
    //in the Software without restriction, including without limitation the rights
    //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    //copies of the Software, and to permit persons to whom the Software is
    //furnished to do so, subject to the following conditions:
    
    //The above copyright notice and this permission notice shall be included in
    //all copies or substantial portions of the Software.
    
    //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    //THE SOFTWARE.*/
    
    //(function($){
    //        $.fn.extend({
    //            tableExport: function(options) {
    //                var defaults = {
    //                        separator: ',',
    //                        ignoreColumn: [],
    //                        tableName:'yourTableName',
    //                        type:'csv',
    //                        pdfFontSize:14,
    //                        pdfLeftMargin:20,
    //                        escape:'true',
    //                        htmlContent:'false',
    //                        consoleLog:'false'
    //                };
                    
    //                var options = $.extend(defaults, options);
    //                var el = this;
                    
    //                if(defaults.type == 'csv' || defaults.type == 'txt'){
                    
    //                    // Header
    //                    var tdData ="";
    //                    $(el).find('thead').find('tr').each(function() {
    //                    tdData += "
    ";                    
    //                        $(this).filter(':visible').find('th').each(function(index,data) {
    //                            if ($(this).css('display') != 'none'){
    //                                if(defaults.ignoreColumn.indexOf(index) == -1){
    //                                    tdData += '"' + parseString($(this)) + '"' + defaults.separator;                                    
    //                                }
    //                            }
                                
    //                        });
    //                        tdData = $.trim(tdData);
    //                        tdData = $.trim(tdData).substring(0, tdData.length -1);
    //                    });
                        
    //                    // Row vs Column
    //                    $(el).find('tbody').find('tr').each(function() {
    //                    tdData += "
    ";
    //                        $(this).filter(':visible').find('td').each(function(index,data) {
    //                            if ($(this).css('display') != 'none'){
    //                                if(defaults.ignoreColumn.indexOf(index) == -1){
    //                                    tdData += '"'+ parseString($(this)) + '"'+ defaults.separator;
    //                                }
    //                            }
    //                        });
    //                        //tdData = $.trim(tdData);
    //                        tdData = $.trim(tdData).substring(0, tdData.length -1);
    //                    });
                        
    //                    //output
    //                    if(defaults.consoleLog == 'true'){
    //                        console.log(tdData);
    //                    }
    //                    var base64data = "base64," + $.base64.encode(tdData);
    //                    window.open('data:application/'+defaults.type+';filename=exportData;' + base64data);
    //                }else if(defaults.type == 'sql'){
                    
    //                    // Header
    //                    var tdData ="INSERT INTO `"+defaults.tableName+"` (";
    //                    $(el).find('thead').find('tr').each(function() {
                        
    //                        $(this).filter(':visible').find('th').each(function(index,data) {
    //                            if ($(this).css('display') != 'none'){
    //                                if(defaults.ignoreColumn.indexOf(index) == -1){
    //                                    tdData += '`' + parseString($(this)) + '`,' ;                                    
    //                                }
    //                            }
                                
    //                        });
    //                        tdData = $.trim(tdData);
    //                        tdData = $.trim(tdData).substring(0, tdData.length -1);
    //                    });
    //                    tdData += ") VALUES ";
    //                    // Row vs Column
    //                    $(el).find('tbody').find('tr').each(function() {
    //                    tdData += "(";
    //                        $(this).filter(':visible').find('td').each(function(index,data) {
    //                            if ($(this).css('display') != 'none'){
    //                                if(defaults.ignoreColumn.indexOf(index) == -1){
    //                                    tdData += '"'+ parseString($(this)) + '",';
    //                                }
    //                            }
    //                        });
                            
    //                        tdData = $.trim(tdData).substring(0, tdData.length -1);
    //                        tdData += "),";
    //                    });
    //                    tdData = $.trim(tdData).substring(0, tdData.length -1);
    //                    tdData += ";";
                        
    //                    //output
    //                    //console.log(tdData);
                        
    //                    if(defaults.consoleLog == 'true'){
    //                        console.log(tdData);
    //                    }
                        
    //                    var base64data = "base64," + $.base64.encode(tdData);
    //                    window.open('data:application/sql;filename=exportData;' + base64data);
                        
                    
    //                }else if(defaults.type == 'json'){
                    
    //                    var jsonHeaderArray = [];
    //                    $(el).find('thead').find('tr').each(function() {
    //                        var tdData ="";    
    //                        var jsonArrayTd = [];
                        
    //                        $(this).filter(':visible').find('th').each(function(index,data) {
    //                            if ($(this).css('display') != 'none'){
    //                                if(defaults.ignoreColumn.indexOf(index) == -1){
    //                                    jsonArrayTd.push(parseString($(this)));                                    
    //                                }
    //                            }
    //                        });                                    
    //                        jsonHeaderArray.push(jsonArrayTd);                        
                            
    //                    });
                        
    //                    var jsonArray = [];
    //                    $(el).find('tbody').find('tr').each(function() {
    //                        var tdData ="";    
    //                        var jsonArrayTd = [];
                        
    //                        $(this).filter(':visible').find('td').each(function(index,data) {
    //                            if ($(this).css('display') != 'none'){
    //                                if(defaults.ignoreColumn.indexOf(index) == -1){
    //                                    jsonArrayTd.push(parseString($(this)));                                    
    //                                }
    //                            }
    //                        });                                    
    //                        jsonArray.push(jsonArrayTd);                                    
                            
    //                    });
                        
    //                    var jsonExportArray =[];
    //                    jsonExportArray.push({header:jsonHeaderArray,data:jsonArray});
                        
    //                    //Return as JSON
    //                    //console.log(JSON.stringify(jsonExportArray));
                        
    //                    //Return as Array
    //                    //console.log(jsonExportArray);
    //                    if(defaults.consoleLog == 'true'){
    //                        console.log(JSON.stringify(jsonExportArray));
    //                    }
    //                    var base64data = "base64," + $.base64.encode(JSON.stringify(jsonExportArray));
    //                    window.open('data:application/json;filename=exportData;' + base64data);
    //                }else if(defaults.type == 'xml'){
                    
    //                    var xml = '<?xml version="1.0" encoding="utf-8"?>';
    //                    xml += '<tabledata><fields>';
    
    //                    // Header
    //                    $(el).find('thead').find('tr').each(function() {
    //                        $(this).filter(':visible').find('th').each(function(index,data) {
    //                            if ($(this).css('display') != 'none'){                    
    //                                if(defaults.ignoreColumn.indexOf(index) == -1){
    //                                    xml += "<field>" + parseString($(this)) + "</field>";
    //                                }
    //                            }
    //                        });                                    
    //                    });                    
    //                    xml += '</fields><data>';
                        
    //                    // Row Vs Column
    //                    var rowCount=1;
    //                    $(el).find('tbody').find('tr').each(function() {
    //                        xml += '<row id="'+rowCount+'">';
    //                        var colCount=0;
    //                        $(this).filter(':visible').find('td').each(function(index,data) {
    //                            if ($(this).css('display') != 'none'){    
    //                                if(defaults.ignoreColumn.indexOf(index) == -1){
    //                                    xml += "<column-"+colCount+">"+parseString($(this))+"</column-"+colCount+">";
    //                                }
    //                            }
    //                            colCount++;
    //                        });                                                            
    //                        rowCount++;
    //                        xml += '</row>';
    //                    });                    
    //                    xml += '</data></tabledata>'
                        
    //                    if(defaults.consoleLog == 'true'){
    //                        console.log(xml);
    //                    }
                        
    //                    var base64data = "base64," + $.base64.encode(xml);
    //                    window.open('data:application/xml;filename=exportData;' + base64data);
    
    //                }else if(defaults.type == 'excel' || defaults.type == 'doc'|| defaults.type == 'powerpoint'  ){
    //                    //console.log($(this).html());
    //                    var excel="<table>";
    //                    // Header
    //                    $(el).find('thead').find('tr').each(function() {
    //                        excel += "<tr>";
    //                        $(this).filter(':visible').find('th').each(function(index,data) {
    //                            if ($(this).css('display') != 'none'){                    
    //                                if(defaults.ignoreColumn.indexOf(index) == -1){
    //                                    excel += "<td>" + parseString($(this))+ "</td>";
    //                                }
    //                            }
    //                        });    
    //                        excel += '</tr>';                        
                            
    //                    });                    
                        
                        
    //                    // Row Vs Column
    //                    var rowCount=1;
    //                    $(el).find('tbody').find('tr').each(function() {
    //                        excel += "<tr>";
    //                        var colCount=0;
    //                        $(this).filter(':visible').find('td').each(function(index,data) {
    //                            if ($(this).css('display') != 'none'){    
    //                                if(defaults.ignoreColumn.indexOf(index) == -1){
    //                                    excel += "<td>"+parseString($(this))+"</td>";
    //                                }
    //                            }
    //                            colCount++;
    //                        });                                                            
    //                        rowCount++;
    //                        excel += '</tr>';
    //                    });                    
    //                    excel += '</table>'
                        
    //                    if(defaults.consoleLog == 'true'){
    //                        console.log(excel);
    //                    }
                        
    //                    var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:"+defaults.type+"' xmlns='http://www.w3.org/TR/REC-html40'>";
    //                    excelFile += "<head>";
    //                    excelFile += "<!--[if gte mso 9]>";
    //                    excelFile += "<xml>";
    //                    excelFile += "<x:ExcelWorkbook>";
    //                    excelFile += "<x:ExcelWorksheets>";
    //                    excelFile += "<x:ExcelWorksheet>";
    //                    excelFile += "<x:Name>";
    //                    excelFile += "{worksheet}";
    //                    excelFile += "</x:Name>";
    //                    excelFile += "<x:WorksheetOptions>";
    //                    excelFile += "<x:DisplayGridlines/>";
    //                    excelFile += "</x:WorksheetOptions>";
    //                    excelFile += "</x:ExcelWorksheet>";
    //                    excelFile += "</x:ExcelWorksheets>";
    //                    excelFile += "</x:ExcelWorkbook>";
    //                    excelFile += "</xml>";
    //                    excelFile += "<![endif]-->";
    //                    excelFile += "</head>";
    //                    excelFile += "<body>";
    //                    excelFile += excel;
    //                    excelFile += "</body>";
    //                    excelFile += "</html>";
    
    //                    var base64data = "base64," + $.base64.encode(excelFile);
    //                    window.open('data:application/vnd.ms-'+defaults.type+';filename=exportData.doc;' + base64data);
                        
    //                }else if(defaults.type == 'png'){
    //                    html2canvas($(el), {
    //                        onrendered: function(canvas) {                                        
    //                            var img = canvas.toDataURL("image/png");
    //                            window.open(img);
                                
                                
    //                        }
    //                    });        
    //                }else if(defaults.type == 'pdf'){
        
    //                    var doc = new jsPDF('p','pt', 'a4', true);
    //                    doc.setFontSize(defaults.pdfFontSize);
                        
    //                    // Header
    //                    var startColPosition=defaults.pdfLeftMargin;
    //                    $(el).find('thead').find('tr').each(function() {
    //                        $(this).filter(':visible').find('th').each(function(index,data) {
    //                            if ($(this).css('display') != 'none'){                    
    //                                if(defaults.ignoreColumn.indexOf(index) == -1){
    //                                    var colPosition = startColPosition+ (index * 50);                                    
    //                                    doc.text(colPosition,20, parseString($(this)));
    //                                }
    //                            }
    //                        });                                    
    //                    });                    
                    
                    
    //                    // Row Vs Column
    //                    var startRowPosition = 20; var page =1;var rowPosition=0;
    //                    $(el).find('tbody').find('tr').each(function(index,data) {
    //                        rowCalc = index+1;
                            
    //                    if (rowCalc % 26 == 0){
    //                        doc.addPage();
    //                        page++;
    //                        startRowPosition=startRowPosition+10;
    //                    }
    //                    rowPosition=(startRowPosition + (rowCalc * 10)) - ((page -1) * 280);
                            
    //                        $(this).filter(':visible').find('td').each(function(index,data) {
    //                            if ($(this).css('display') != 'none'){    
    //                                if(defaults.ignoreColumn.indexOf(index) == -1){
    //                                    var colPosition = startColPosition+ (index * 50);                                    
    //                                    doc.text(colPosition,rowPosition, parseString($(this)));
    //                                }
    //                            }
                                
    //                        });                                                            
                            
    //                    });                    
                                            
    //                    // Output as Data URI
    //                    doc.output('datauri');
        
    //                }
                    
                    
    //                function parseString(data){
                    
    //                    if(defaults.htmlContent == 'true'){
    //                        content_data = data.html().trim();
    //                    }else{
    //                        content_data = data.text().trim();
    //                    }
                        
    //                    if(defaults.escape == 'true'){
    //                        content_data = escape(content_data);
    //                    }
                        
                        
                        
    //                    return content_data;
    //                }
                
    //            }
    //        });
    //    })(jQuery);
            
    //------------------新的
    /*The MIT License (MIT)
    
     Original work Copyright (c) 2014 https://github.com/kayalshri/
     Modified work Copyright (c) 2015 https://github.com/hhurz/
    
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"), to deal
     in the Software without restriction, including without limitation the rights
     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
     copies of the Software, and to permit persons to whom the Software is
     furnished to do so, subject to the following conditions:
    
     The above copyright notice and this permission notice shall be included in
     all copies or substantial portions of the Software.
    
     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     THE SOFTWARE.*/
    ////js导出表格到word、json、excel、csv
    //function Register() {
    //    //$("#txt").on("click", function () {
    //    //    ViewSate();
    //    //    $("#exp").val("yes");
    //    //    $('#table1').tableExport({ type: "txt", escape: 'false' });
    //    //});
    //    $("#xml").unbind("click");
    //    $("#xml").on("click", function () {
    //        ViewSate();
    //        $("#exp").val("yes");
    //        $('#table1').tableExport({ type: "xml", escape: 'false' });
    //    });
    //    $("#json").unbind("click");
    //    $("#json").on("click", function () {
    //        ViewSate();
    //        $("#exp").val("yes");
    //        $('#table1').tableExport({ type: "json", escape: 'false' });
    //    });
    //    $("#doc").unbind("click");
    //    $("#doc").on("click", function () {
    //        ViewSate();
    //        $("#exp").val("yes");
    //        $('#table1').tableExport({ type: "doc", escape: 'false' });
    //    });
    //    $("#excel").unbind("click");
    //    $("#excel").on("click", function () {
    
    //        ViewSate();
    //        $("#exp").val("yes");
    //        $("#table1").table2excel({
    //            exclude: ".noExl",
    //            name: "Excel Document Name",
    //            filename: "myFileName" + Math.random(),
    //            fileext: ".xls",
    //            exclude_img: true,
    //            exclude_links: true,
    //            exclude_inputs: true
    //        });
    //        //$('#table1').tableExport({ type: "excel", escape: 'false' });
    //    });
    //    $("#csv").unbind("click");
    //    $("#csv").on("click", function () {
    //        ViewSate();
    //        $("#exp").val("yes");
    //        $('#table1').tableExport({ type: "csv", escape: 'false' });
    //    });
    //}
    (function ($) {
        $.fn.extend({
            tableExport: function (options) {
                var defaults = {
                    consoleLog: false,
                    csvEnclosure: '"',
                    csvSeparator: ',',
                    csvUseBOM: true,
                    displayTableName: false,
                    escape: false,
                    excelstyles: ['border-bottom', 'border-top', 'border-left', 'border-right'],
                    fileName: 'dailyData',
                    htmlContent: false,
                    ignoreColumn: [],
                    ignoreRow: [],
                    jspdf: {
                        orientation: 'p',
                        unit: 'pt',
                        format: 'a4',
                        margins: { left: 20, right: 10, top: 10, bottom: 10 },
                        autotable: {
                            padding: 2,
                            lineHeight: 12,
                            fontSize: 8,
                            tableExport: {
                                onAfterAutotable: null,
                                onBeforeAutotable: null,
                                onTable: null
                            }
                        }
                    },
                    numbers: {
                        html: {
                            decimalMark: '.',
                            thousandsSeparator: ','
                        },
                        output: {
                            decimalMark: '.',
                            thousandsSeparator: ','
                        }
                    },
                    onCellData: null,
                    outputMode: 'file', // file|string|base64
                    tbodySelector: 'tr',
                    theadSelector: 'tr',
                    tableName: 'myTableName',
                    type: 'csv',
                    worksheetName: 'dataStatistic'
                };
    
                var el = this;
                var DownloadEvt = null;
                var rowIndex = 0;
                var rowspans = [];
                var trData = '';
    
                $.extend(true, defaults, options);
    
                if (defaults.type == 'csv' || defaults.type == 'txt') {
    
                    // Header
                    var csvData = "";
                    rowIndex = 0;
                    $(el).find('thead').first().find(defaults.theadSelector).each(function () {
                        trData = "";
                        ForEachVisibleCell(this, 'th,td', rowIndex,
                                function (cell, row, col) {
                                    trData += csvString(cell, row, col) + defaults.csvSeparator;
                                });
                        trData = $.trim(trData).substring(0, trData.length - 1);
                        if (trData.length > 0) {
    
                            if (csvData.length > 0)
                                csvData += "
    ";
    
                            csvData += trData;
                        }
                        rowIndex++;
                    });
    
                    // Row vs Column
                    $(el).find('tbody').first().find(defaults.tbodySelector).each(function () {
                        trData = "";
                        ForEachVisibleCell(this, 'td', rowIndex,
                                function (cell, row, col) {
                                    trData += csvString(cell, row, col) + defaults.csvSeparator;
                                });
                        trData = $.trim(trData).substring(0, trData.length - 1);
                        if (trData.length > 0) {
    
                            if (csvData.length > 0)
                                csvData += "
    ";
    
                            csvData += trData;
                        }
                        rowIndex++;
                    });
    
                    csvData += "
    ";
    
                    //output
                    if (defaults.consoleLog === true)
                        console.log(csvData);
    
                    if (defaults.outputMode === 'string')
                        return csvData;
    
                    if (defaults.outputMode === 'base64')
                        return base64encode(csvData);
    
                    try {
                        var blob = new Blob([((defaults.type == 'csv' && defaults.csvUseBOM) ? 'ufeff' : '') + csvData], { type: "text/" + (defaults.type == 'csv' ? 'csv' : 'plain') + ";charset=utf-8" });
                        saveAs(blob, defaults.fileName + '.' + defaults.type);
                    }
                    catch (e) {
                        downloadFile(defaults.fileName + '.' + defaults.type,
                                'data:text/' + (defaults.type == 'csv' ? 'csv' : 'plain') + ';charset=utf-8,' + ((defaults.type == 'csv' && defaults.csvUseBOM) ? 'ufeff' : '') +
                                encodeURIComponent(csvData));
                    }
    
                } else if (defaults.type == 'sql') {
    
                    // Header
                    rowIndex = 0;
                    var tdData = "INSERT INTO `" + defaults.tableName + "` (";
                    $(el).find('thead').first().find(defaults.theadSelector).each(function () {
    
                        ForEachVisibleCell(this, 'th,td', rowIndex,
                                function (cell, row, col) {
                                    tdData += "'" + parseString(cell, row, col) + "',";
                                });
                        rowIndex++;
                        tdData = $.trim(tdData);
                        tdData = $.trim(tdData).substring(0, tdData.length - 1);
                    });
                    tdData += ") VALUES ";
                    // Row vs Column
                    $(el).find('tbody').first().find(defaults.tbodySelector).each(function () {
                        trData = "";
                        ForEachVisibleCell(this, 'td', rowIndex,
                                function (cell, row, col) {
                                    trData += "'" + parseString(cell, row, col) + "',";
                                });
                        if (trData.length > 3) {
                            tdData += "(" + trData;
                            tdData = $.trim(tdData).substring(0, tdData.length - 1);
                            tdData += "),";
                        }
                        rowIndex++;
                    });
    
                    tdData = $.trim(tdData).substring(0, tdData.length - 1);
                    tdData += ";";
    
                    //output
                    if (defaults.consoleLog === true)
                        console.log(tdData);
    
                    if (defaults.outputMode == 'string')
                        return tdData;
    
                    if (defaults.outputMode == 'base64')
                        return base64encode(tdData);
    
                    try {
                        var blob = new Blob([tdData], { type: "text/plain;charset=utf-8" });
                        saveAs(blob, defaults.fileName + '.sql');
                    }
                    catch (e) {
                        downloadFile(defaults.fileName + '.sql', 'data:application/sql;charset=utf-8,' + encodeURIComponent(tdData));
                    }
    
                } else if (defaults.type == 'json') {
    
                    var jsonHeaderArray = [];
                    $(el).find('thead').first().find(defaults.theadSelector).each(function () {
                        var jsonArrayTd = [];
    
                        ForEachVisibleCell(this, 'th,td', rowIndex,
                                function (cell, row, col) {
                                    jsonArrayTd.push(parseString(cell, row, col));
                                });
                        jsonHeaderArray.push(jsonArrayTd);
                    });
    
                    var jsonArray = [];
                    $(el).find('tbody').first().find(defaults.tbodySelector).each(function () {
                        var jsonArrayTd = [];
    
                        ForEachVisibleCell(this, 'td', rowIndex,
                                function (cell, row, col) {
                                    jsonArrayTd.push(parseString(cell, row, col));
                                });
    
                        if (jsonArrayTd.length > 0 && (jsonArrayTd.length != 1 || jsonArrayTd[0] != ""))
                            jsonArray.push(jsonArrayTd);
    
                        rowIndex++;
                    });
    
                    var jsonExportArray = [];
                    jsonExportArray.push({ header: jsonHeaderArray, data: jsonArray });
    
                    var sdata = JSON.stringify(jsonExportArray);
    
                    if (defaults.consoleLog === true)
                        console.log(sdata);
    
                    if (defaults.outputMode == 'string')
                        return sdata;
    
                    var base64data = base64encode(sdata);
    
                    if (defaults.outputMode == 'base64')
                        return base64data;
    
                    try {
                        var blob = new Blob([sdata], { type: "application/json;charset=utf-8" });
                        saveAs(blob, defaults.fileName + '.json');
                    }
                    catch (e) {
                        downloadFile(defaults.fileName + '.json', 'data:application/json;charset=utf-8;base64,' + base64data);
                    }
    
                } else if (defaults.type === 'xml') {
    
                    rowIndex = 0;
                    var xml = '<?xml version="1.0" encoding="utf-8"?>';
                    xml += '<tabledata><fields>';
    
                    // Header
                    $(el).find('thead').first().find(defaults.theadSelector).each(function () {
    
                        ForEachVisibleCell(this, 'th,td', rowIndex,
                                function (cell, row, col) {
                                    xml += "<field>" + parseString(cell, row, col) + "</field>";
                                });
                        rowIndex++;
                    });
                    xml += '</fields><data>';
    
                    // Row Vs Column
                    var rowCount = 1;
                    $(el).find('tbody').first().find(defaults.tbodySelector).each(function () {
                        var colCount = 1;
                        trData = "";
                        ForEachVisibleCell(this, 'td', rowIndex,
                                function (cell, row, col) {
                                    trData += "<column-" + colCount + ">" + parseString(cell, row, col) + "</column-" + colCount + ">";
                                    colCount++;
                                });
                        if (trData.length > 0 && trData != "<column-1></column-1>") {
                            xml += '<row id="' + rowCount + '">' + trData + '</row>';
                            rowCount++;
                        }
    
                        rowIndex++;
                    });
                    xml += '</data></tabledata>';
    
                    //output
                    if (defaults.consoleLog === true)
                        console.log(xml);
    
                    if (defaults.outputMode == 'string')
                        return xml;
    
                    var base64data = base64encode(xml);
    
                    if (defaults.outputMode == 'base64')
                        return base64data;
    
                    try {
                        var blob = new Blob([xml], { type: "application/xml;charset=utf-8" });
                        saveAs(blob, defaults.fileName + '.xml');
                    }
                    catch (e) {
                        downloadFile(defaults.fileName + '.xml', 'data:application/xml;charset=utf-8;base64,' + base64data);
                    }
    
                } else if (defaults.type == 'excel' || defaults.type == 'doc') {
                    //console.log($(this).html());
    
                    rowIndex = 0;
                    var excelData = "<table>";
                    // Header
                    $(el).find('thead').first().find(defaults.theadSelector).each(function () {
                        trData = "";
                        ForEachVisibleCell(this, 'th,td', rowIndex,
                                function (cell, row, col) {
                                    if (cell != null) {
                                        trData += "<td style='";
                                        for (var styles in defaults.excelstyles) {
                                            if (defaults.excelstyles.hasOwnProperty(styles)) {
                                                trData += defaults.excelstyles[styles] + ": " + $(cell).css(defaults.excelstyles[styles]) + ";";
                                            }
                                        }
                                        trData += "'>" + parseString(cell, row, col) + "</td>";
                                    }
                                });
                        if (trData.length > 0)
                            excelData += "<tr>" + trData + '</tr>';
                        rowIndex++;
                    });
    
                    // Row Vs Column
                    $(el).find('tbody').find('tr').each(function () {
                        trData = "";
                        ForEachVisibleCell(this, 'td', rowIndex,
                                function (cell, row, col) {
                                    if (cell != null) {
                                        trData += "<td style='";
                                        for (var styles in defaults.excelstyles) {
                                            if (defaults.excelstyles.hasOwnProperty(styles)) {
                                                trData += defaults.excelstyles[styles] + ": " + $(cell).css(defaults.excelstyles[styles]) + ";";
                                            }
                                        }
                                        if ($(cell).is("[colspan]"))
                                            trData += "' colspan='" + $(cell).attr('colspan');
                                        if ($(cell).is("[rowspan]"))
                                            trData += "' rowspan='" + $(cell).attr('rowspan');
                                        trData += "'>" + parseString(cell, row, col) + "</td>";
                                    }
                                });
                        if (trData.length > 0)
                            excelData += "<tr>" + trData + '</tr>';
                        rowIndex++;
                    });
    
                    if (defaults.displayTableName)
                        excelData += "<tr><td></td></tr><tr><td></td></tr><tr><td>" + parseString($('<p>' + defaults.tableName + '</p>')) + "</td></tr>";
    
                    excelData += '</table>';
    
                    if (defaults.consoleLog === true)
                        console.log(excelData);
    
                    var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:" + defaults.type + "' xmlns='http://www.w3.org/TR/REC-html40'>";
                    excelFile += '<meta http-equiv="content-type" content="application/vnd.ms-' + defaults.type + '; charset=UTF-8">';
                    excelFile += '<meta http-equiv="content-type" content="application/';
                    excelFile += (defaults.type === 'excel') ? 'vnd.ms-excel' : 'msword';
                    excelFile += '; charset=UTF-8">';
                    excelFile += "<head>";
                    if (defaults.type === 'excel') {
                        excelFile += "<!--[if gte mso 9]>";
                        excelFile += "<xml>";
                        excelFile += "<x:ExcelWorkbook>";
                        excelFile += "<x:ExcelWorksheets>";
                        excelFile += "<x:ExcelWorksheet>";
                        excelFile += "<x:Name>";
                        excelFile += defaults.worksheetName;
                        excelFile += "</x:Name>";
                        excelFile += "<x:WorksheetOptions>";
                        excelFile += "<x:DisplayGridlines/>";
                        excelFile += "</x:WorksheetOptions>";
                        excelFile += "</x:ExcelWorksheet>";
                        excelFile += "</x:ExcelWorksheets>";
                        excelFile += "</x:ExcelWorkbook>";
                        excelFile += "</xml>";
                        excelFile += "<![endif]-->";
                    }
                    excelFile += "</head>";
                    excelFile += "<body>";
                    excelFile += excelData;
                    excelFile += "</body>";
                    excelFile += "</html>";
    
                    if (defaults.outputMode == 'string')
                        return excelFile;
    
                    var base64data = base64encode(excelFile);
    
                    if (defaults.outputMode === 'base64')
                        return base64data;
    
                    var extension = (defaults.type === 'excel') ? 'xls' : 'doc';
                    try {
                        var blob = new Blob([excelFile], { type: 'application/vnd.ms-' + defaults.type });
                        saveAs(blob, defaults.fileName + '.' + extension);
                    }
                    catch (e) {
                        downloadFile(defaults.fileName + '.' + extension, 'data:application/vnd.ms-' + defaults.type + ';base64,' + base64data);
                    }
    
                } else if (defaults.type == 'png') {
                    /*html2canvas($(el), {
                        onrendered: function (canvas) {
    
                            var image = canvas.toDataURL();
                            image = image.substring(22); // remove data stuff
    
                            var byteString = atob(image);
                            var buffer = new ArrayBuffer(byteString.length);
                            var intArray = new Uint8Array(buffer);
    
                            for (var i = 0; i < byteString.length; i++)
                                intArray[i] = byteString.charCodeAt(i);
    
                            try {
                                var blob = new Blob([buffer], { type: "image/png" });
                                saveAs(blob, defaults.fileName + '.png');
                            }
                            catch (e) {
                                downloadFile(defaults.fileName + '.png', 'data:image/png;base64,' + image);
                            }
                        }
                    });*/
                    html2canvas($(el), {
                        onrendered: function (canvas) {
                            var img = canvas.toDataURL("image/png");
                            window.open(img);
    
    
                        }
                    });
    
                } else if (defaults.type == 'pdf') {
                    alert(99)
                    if (defaults.jspdf.autotable === false) {
                        alert(1)
                        var addHtmlOptions = {
                            dim: {
                                w: getPropertyUnitValue($(el).first().get(0), 'width', 'mm'),
                                h: getPropertyUnitValue($(el).first().get(0), 'height', 'mm')
                            },
                            pagesplit: false
                        };
    
                        var doc = new jsPDF(defaults.jspdf.orientation, defaults.jspdf.unit, defaults.jspdf.format);
                        doc.addHTML($(el).first(),
                                defaults.jspdf.margins.left,
                                defaults.jspdf.margins.top,
                                addHtmlOptions,
                                function () {
                                    jsPdfOutput(doc);
                                });
                        //delete doc;
                    }
                    else {
                        alert(2)
                      
                        var teOptions = defaults.jspdf.autotable.tableExport;
                        if (typeof defaults.jspdf.format === 'string' && defaults.jspdf.format.toLowerCase() === 'bestfit') {
                            var pageFormats = {
                                'a0': [2383.94, 3370.39], 'a1': [1683.78, 2383.94],
                                'a2': [1190.55, 1683.78], 'a3': [841.89, 1190.55],
                                'a4': [595.28, 841.89]
                            };
                            var rk = '', ro = '';
                            var mw = 0;
                            alert(3)
                            $(el).filter(':visible').each(function () {
                                if ($(this).css('display') != 'none') {
                                    alert(4)
                                    var w = getPropertyUnitValue($(this).get(0), 'width', 'pt');
    
                                    if (w > mw) {
                                        if (w > pageFormats['a0'][0]) {
                                            rk = 'a0';
                                            ro = 'l';
                                        }
                                        for (var key in pageFormats) {
                                            if (pageFormats.hasOwnProperty(key)) {
                                                if (pageFormats[key][1] > w) {
                                                    rk = key;
                                                    ro = 'l';
                                                    if (pageFormats[key][0] > w)
                                                        ro = 'p';
                                                }
                                            }
                                        }
                                        mw = w;
                                    }
                                }
                            });
                            defaults.jspdf.format = (rk == '' ? 'a4' : rk);
                            defaults.jspdf.orientation = (ro == '' ? 'w' : ro);
                        }
                        alert(5)
                        // The jsPDF doc object is stored in defaults.jspdf.autotable.tableExport,
                        // thus it can be accessed from any callback function from below
                        teOptions.doc = new jsPDF(defaults.jspdf.orientation,
                                defaults.jspdf.unit,
                                defaults.jspdf.format);
                        // $(el).find('thead').first()
                        $(el).filter(':visible').each(function () {
                            if ($(this).css('display') != 'none') {
                                var colKey;
                                var rowIndex = 0;
                                var atOptions = {};
                                teOptions.columns = [];
                                teOptions.rows = [];
                                teOptions.rowoptions = {};
    
                                // onTable: optional callback function for every matching table that can be used
                                // to modify the tableExport options or to skip the output of a particular table
                                // when the  table selector targets multiple tables
                                if (typeof teOptions.onTable === 'function')
                                    if (teOptions.onTable($(this), defaults) === false)
                                        return true; // continue to next iteration step (table)
    
                                // each table works with an own copy of AutoTable options
                                Object.keys(defaults.jspdf.autotable).forEach(function (key) {
                                    atOptions[key] = defaults.jspdf.autotable[key];
                                });
                                atOptions.margins = {};
                                $.extend(true, atOptions.margins, defaults.jspdf.margins);
    
                                if (typeof atOptions.renderCell !== 'function') {
    
                                    // draw cell text with original <td> alignment
                                    atOptions.renderCell = function (x, y, width, height, key, value, row, settings) {
                                        var doc = settings.tableExport.doc;
                                        var xoffset = 0;
    
                                        doc.setFillColor(row % 2 === 0 ? 245 : 255);
                                        doc.setTextColor(50);
                                        doc.rect(x, y, width, height, 'F');
                                        y += settings.lineHeight / 2 + doc.autoTableTextHeight() / 2 - 2.5;
    
                                        if (typeof settings.tableExport.columns[key] != 'undefined') {
                                            var col = settings.tableExport.columns[key];
                                            if (typeof col.style != 'undefined') {
                                                var alignment = col.style.align;
                                                var rowopt = settings.tableExport.rowoptions[(row + 1) + ":" + key];
    
                                                if (typeof rowopt != 'undefined')
                                                    alignment = rowopt.style.align;
    
                                                if (alignment == 'right')
                                                    xoffset = width - doc.getStringUnitWidth(('' + value)) * doc.internal.getFontSize() - settings.padding;
                                                else if (alignment == 'center')
                                                    xoffset = (width - doc.getStringUnitWidth(('' + value)) * doc.internal.getFontSize()) / 2;
                                            }
                                        }
    
                                        if (xoffset < settings.padding)
                                            xoffset = settings.padding;
    
                                        doc.text(value, x + xoffset, y);
                                    }
                                }
    
                                // collect header and data rows
                                //$(this).find('thead')
                                $(el).find('thead').first().find(defaults.theadSelector).each(function () {
                                    alert("a")
                                    colKey = 0;
    
                                    ForEachVisibleCell(this, 'th,td', rowIndex,
                                            function (cell, row, col) {
                                                var obj = {
                                                    title: parseString(cell, row, col),
                                                    key: colKey++,
                                                    style: {
                                                        align: getStyle(cell, 'text-align'),
                                                        bcolor: getStyle(cell, 'background-color')
                                                    }
                                                };
                                                teOptions.columns.push(obj);
                                            });
                                    rowIndex++;
                                });
    
                                $(this).find('tbody').find(defaults.tbodySelector).each(function () {
                                    //alert("b")
                                    var rowData = [];
                                    var rowCount = 0;
                                    colKey = 0;
    
                                    ForEachVisibleCell(this, 'th,td', rowIndex,
                                            function (cell, row, col) {
                                                var obj = {
                                                    style: {
                                                        align: getStyle(cell, 'text-align'),
                                                        bcolor: getStyle(cell, 'background-color')
                                                    }
                                                };
                                                teOptions.rowoptions[rowCount + ":" + colKey++] = obj;
    
                                                rowData.push(parseString(cell, row, col));
                                            });
                                    if (rowData.length) {
                                        teOptions.rows.push(rowData);
                                        rowCount++
                                    }
                                    rowIndex++;
                                });
                                alert("b1")
                                // onBeforeAutotable: optional callback function before calling
                                // jsPDF AutoTable that can be used to modify the AutoTable options
                                if (typeof teOptions.onBeforeAutotable === 'function')
                                    teOptions.onBeforeAutotable($(this), teOptions.columns, teOptions.rows, atOptions);
    
                                teOptions.doc.autoTable(teOptions.columns, teOptions.rows, atOptions);
    
                                // onAfterAutotable: optional callback function after returning
                                // from jsPDF AutoTable that can be used to modify the AutoTable options
                                if (typeof teOptions.onAfterAutotable === 'function')
                                    teOptions.onAfterAutotable($(this), atOptions);
    
                                // set the start position for the next table (in case there is one)
                                defaults.jspdf.autotable.startY = teOptions.doc.autoTableEndPosY() + atOptions.margins.top;
                            }
                        });
                        alert("c")
                        jsPdfOutput(teOptions.doc);
    
                        teOptions.columns.length = 0;
                        teOptions.rows.length = 0;
                        delete teOptions.doc;
                        teOptions.doc = null;
                    }
                }
    
                function ForEachVisibleCell(tableRow, selector, rowIndex, cellcallback) {
                    if (defaults.ignoreRow.indexOf(rowIndex) == -1) {
                        $(tableRow).filter(':visible').find(selector).each(function (colIndex) {
                            if ($(this).data("tableexport-display") == 'always' ||
                                ($(this).css('display') != 'none' &&
                                 $(this).css('visibility') != 'hidden' &&
                                 $(this).data("tableexport-display") != 'none')) {
                                if (defaults.ignoreColumn.indexOf(colIndex) == -1) {
                                    if (typeof (cellcallback) === "function") {
                                        var cs = 0; // colspan value
    
                                        // handle previously detected rowspans
                                        if (typeof rowspans[rowIndex] != 'undefined' && rowspans[rowIndex].length > 0) {
                                            for (c = 0; c <= colIndex; c++) {
                                                if (typeof rowspans[rowIndex][c] != 'undefined') {
                                                    cellcallback(null, rowIndex, c);
                                                    delete rowspans[rowIndex][c];
                                                    colIndex++;
                                                }
                                            }
                                        }
    
                                        // output content of current cell
                                        cellcallback(this, rowIndex, colIndex);
    
                                        // handle colspan of current cell
                                        if ($(this).is("[colspan]")) {
                                            cs = $(this).attr('colspan');
                                            for (c = 0; c < cs - 1; c++)
                                                cellcallback(null, rowIndex, colIndex + c);
                                        }
    
                                        // store rowspan for following rows
                                        if ($(this).is("[rowspan]")) {
                                            var rs = parseInt($(this).attr('rowspan'));
    
                                            for (r = 1; r < rs; r++) {
                                                if (typeof rowspans[rowIndex + r] == 'undefined')
                                                    rowspans[rowIndex + r] = [];
                                                rowspans[rowIndex + r][colIndex] = "";
    
                                                for (c = 1; c < cs; c++)
                                                    rowspans[rowIndex + r][colIndex + c] = "";
                                            }
                                        }
                                    }
                                }
                            }
                        });
                    }
                }
    
                function jsPdfOutput(doc) {
                    if (defaults.consoleLog === true)
                        console.log(doc.output());
    
                    if (defaults.outputMode == 'string')
                        return doc.output();
    
                    if (defaults.outputMode == 'base64') {
                        alert(123);
                        return $.base64.encode64(doc.output());
                        //  return base64encode(doc.output());
                    }
                    try {
                        var blob = doc.output('blob');
                        saveAs(blob, defaults.fileName + '.pdf');
                    }
                    catch (e) {
                        downloadFile(defaults.fileName + '.pdf', 'data:application/pdf;base64,' + base64encode(doc.output()));
                    }
                }
    
                function escapeRegExp(string) {
                    return string.replace(/([.*+?^=!:${}()|[]/\])/g, "\$1");
                }
    
                function replaceAll(string, find, replace) {
                    return string.replace(new RegExp(escapeRegExp(find), 'g'), replace);
                }
    
                function csvString(cell, rowIndex, colIndex) {
                    var result = '';
    
                    if (cell != null) {
                        var dataString = parseString(cell, rowIndex, colIndex);
    
                        var csvValue = (dataString === null || dataString == '') ? '' : dataString.toString();
    
                        if (dataString instanceof Date)
                            result = defaults.csvEnclosure + dataString.toLocaleString() + defaults.csvEnclosure;
                        else {
                            result = replaceAll(csvValue, defaults.csvEnclosure, defaults.csvEnclosure + defaults.csvEnclosure);
    
                            if (result.indexOf(defaults.csvSeparator) >= 0 || /[
     ]/g.test(result))
                                result = defaults.csvEnclosure + result + defaults.csvEnclosure;
                        }
                    }
    
                    return result;
                }
    
                function parseNumber(value) {
                    value = value || "0";
                    value = replaceAll(value, defaults.numbers.html.decimalMark, '.');
                    value = replaceAll(value, defaults.numbers.html.thousandsSeparator, '');
    
                    return typeof value === "number" || jQuery.isNumeric(value) !== false ? value : false;
                }
    
    
                function parseString(cell, rowIndex, colIndex) {
                    var result = '';
    
                    if (cell != null) {
                        var $cell = $(cell);
    
                        if (defaults.htmlContent === true) {
                            result = $cell.html().trim();
                        }
                        else {
                            result = $cell.text().trim().replace(/u00AD/g, ""); // remove soft hyphens
    
                            if (defaults.numbers.html.decimalMark != defaults.numbers.output.decimalMark ||
                                defaults.numbers.html.thousandsSeparator != defaults.numbers.output.thousandsSeparator) {
                                var number = parseNumber(result);
    
                                if (number !== false) {
                                    var frac = ("" + number).split('.');
                                    if (frac.length == 1)
                                        frac[1] = "";
                                    var mod = frac[0].length > 3 ? frac[0].length % 3 : 0;
    
                                    result = (number < 0 ? "-" : "") +
                                             (defaults.numbers.output.thousandsSeparator ? ((mod ? frac[0].substr(0, mod) + defaults.numbers.output.thousandsSeparator : "") + frac[0].substr(mod).replace(/(d{3})(?=d)/g, "$1" + defaults.numbers.output.thousandsSeparator)) : frac[0]) +
                                             (frac[1].length ? defaults.numbers.output.decimalMark + frac[1] : "");
                                }
                            }
                        }
    
                        if (defaults.escape === true) {
                            result = escape(result);
                        }
    
                        if (typeof defaults.onCellData === 'function') {
                            result = defaults.onCellData($cell, rowIndex, colIndex, result);
                        }
                    }
    
                    return result;
                }
    
                function hyphenate(a, b, c) {
                    return b + "-" + c.toLowerCase();
                }
    
                // get computed style property
                function getStyle(target, prop) {
                    try {
                        if (window.getComputedStyle) { // gecko and webkit
                            prop = prop.replace(/([a-z])([A-Z])/, hyphenate);  // requires hyphenated, not camel
                            return window.getComputedStyle(target, null).getPropertyValue(prop);
                        }
                        if (target.currentStyle) { // ie
                            return target.currentStyle[prop];
                        }
                        return target.style[prop];
                    }
                    catch (e) {
                    }
                    return "";
                }
    
                function getPropertyUnitValue(target, prop, unit) {
                    var baseline = 100;  // any number serves
    
                    var value = getStyle(target, prop);  // get the computed style value
    
                    var numeric = value.match(/d+/);  // get the numeric component
                    if (numeric !== null) {
                        numeric = numeric[0];  // get the string
    
                        var temp = document.createElement("div");  // create temporary element
                        temp.style.overflow = "hidden";  // in case baseline is set too low
                        temp.style.visibility = "hidden";  // no need to show it
    
                        target.parentElement.appendChild(temp); // insert it into the parent for em, ex and %
    
                        temp.style.width = baseline + unit;
                        var factor = baseline / temp.offsetWidth;
    
                        target.parentElement.removeChild(temp);  // clean up
    
                        return (numeric * factor);
                    }
                    return 0;
                }
    
                function downloadFile(filename, data) {
                    var DownloadLink = document.createElement('a');
    
                    if (DownloadLink) {
                        document.body.appendChild(DownloadLink);
                        DownloadLink.style = 'display: none';
                        DownloadLink.download = filename;
                        DownloadLink.href = data;
    
                        if (document.createEvent) {
                            if (DownloadEvt == null)
                                DownloadEvt = document.createEvent('MouseEvents');
    
                            DownloadEvt.initEvent('click', true, false);
                            DownloadLink.dispatchEvent(DownloadEvt);
                        }
                        else if (document.createEventObject)
                            DownloadLink.fireEvent('onclick');
                        else if (typeof DownloadLink.onclick == 'function')
                            DownloadLink.onclick();
    
                        document.body.removeChild(DownloadLink);
                    }
                }
    
                function utf8Encode(string) {
                    string = string.replace(/x0dx0a/g, "x0a");
                    var utftext = "";
                    for (var n = 0; n < string.length; n++) {
                        var c = string.charCodeAt(n);
                        if (c < 128) {
                            utftext += String.fromCharCode(c);
                        }
                        else if ((c > 127) && (c < 2048)) {
                            utftext += String.fromCharCode((c >> 6) | 192);
                            utftext += String.fromCharCode((c & 63) | 128);
                        }
                        else {
                            utftext += String.fromCharCode((c >> 12) | 224);
                            utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                            utftext += String.fromCharCode((c & 63) | 128);
                        }
                    }
                    return utftext;
                }
    
                function base64encode(input) {
                    var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
                    var output = "";
                    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
                    var i = 0;
                    input = utf8Encode(input);
                    while (i < input.length) {
                        chr1 = input.charCodeAt(i++);
                        chr2 = input.charCodeAt(i++);
                        chr3 = input.charCodeAt(i++);
                        enc1 = chr1 >> 2;
                        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
                        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
                        enc4 = chr3 & 63;
                        if (isNaN(chr2)) {
                            enc3 = enc4 = 64;
                        } else if (isNaN(chr3)) {
                            enc4 = 64;
                        }
                        output = output +
                                keyStr.charAt(enc1) + keyStr.charAt(enc2) +
                                keyStr.charAt(enc3) + keyStr.charAt(enc4);
                    }
                    return output;
                }
    
                return this;
            }
        });
    })(jQuery);
    
    jquery.table2excel.js
    /*
     *  jQuery table2excel - v1.0.2
     *  jQuery plugin to export an .xls file in browser from an HTML table
     *  https://github.com/rainabba/jquery-table2excel
     *
     *  Made by rainabba
     *  Under MIT License
     */
    //table2excel.js
    ;(function ( $, window, document, undefined ) {
        var pluginName = "table2excel",
    
        defaults = {
            exclude: ".noExl",
                    name: "Table2Excel"
        };
    
        // The actual plugin constructor
        function Plugin ( element, options ) {
                this.element = element;
                // jQuery has an extend method which merges the contents of two or
                // more objects, storing the result in the first object. The first object
                // is generally empty as we don't want to alter the default options for
                // future instances of the plugin
                //
                this.settings = $.extend( {}, defaults, options );
                this._defaults = defaults;
                this._name = pluginName;
                this.init();
        }
    
        Plugin.prototype = {
            init: function () {
                var e = this;
    
                var utf8Heading = "<meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8">";
                e.template = {
                    head: "<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">" + utf8Heading + "<head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets>",
                    sheet: {
                        head: "<x:ExcelWorksheet><x:Name>",
                        tail: "</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>"
                    },
                    mid: "</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body>",
                    table: {
                        head: "<table>",
                        tail: "</table>"
                    },
                    foot: "</body></html>"
                };
    
                e.tableRows = [];
    
                // get contents of table except for exclude
                $(e.element).each( function(i,o) {
                    var tempRows = "";
                    $(o).find("tr").not(e.settings.exclude).each(function (i,o) {
                        tempRows += "<tr>" + $(o).html() + "</tr>";
                    });
                    e.tableRows.push(tempRows);
                });
    
                e.tableToExcel(e.tableRows, e.settings.name, e.settings.sheetName);
            },
    
            tableToExcel: function (table, name, sheetName) {
                var e = this, fullTemplate="", i, link, a;
    
                e.uri = "data:application/vnd.ms-excel;base64,";
                e.base64 = function (s) {
                    return window.btoa(unescape(encodeURIComponent(s)));
                };
                e.format = function (s, c) {
                    return s.replace(/{(w+)}/g, function (m, p) {
                        return c[p];
                    });
                };
    
                sheetName = typeof sheetName === "undefined" ? "Sheet" : sheetName;
    
                e.ctx = {
                    worksheet: name || "Worksheet",
                    table: table,
                    sheetName: sheetName,
                };
    
                fullTemplate= e.template.head;
    
                if ( $.isArray(table) ) {
                    for (i in table) {
                          //fullTemplate += e.template.sheet.head + "{worksheet" + i + "}" + e.template.sheet.tail;
                          fullTemplate += e.template.sheet.head + sheetName + i + e.template.sheet.tail;
                    }
                }
    
                fullTemplate += e.template.mid;
    
                if ( $.isArray(table) ) {
                    for (i in table) {
                        fullTemplate += e.template.table.head + "{table" + i + "}" + e.template.table.tail;
                    }
                }
    
                fullTemplate += e.template.foot;
    
                for (i in table) {
                    e.ctx["table" + i] = table[i];
                }
                delete e.ctx.table;
    
                if (typeof msie !== "undefined" && msie > 0 || !!navigator.userAgent.match(/Trident.*rv:11./))      // If Internet Explorer
                {
                    if (typeof Blob !== "undefined") {
                        //use blobs if we can
                        fullTemplate = [fullTemplate];
                        //convert to array
                        var blob1 = new Blob(fullTemplate, { type: "text/html" });
                        window.navigator.msSaveBlob(blob1, getFileName(e.settings) );
                    } else {
                        //otherwise use the iframe and save
                        //requires a blank iframe on page called txtArea1
                        txtArea1.document.open("text/html", "replace");
                        txtArea1.document.write(e.format(fullTemplate, e.ctx));
                        txtArea1.document.close();
                        txtArea1.focus();
                        sa = txtArea1.document.execCommand("SaveAs", true, getFileName(e.settings) );
                    }
    
                } else {
                    link = e.uri + e.base64(e.format(fullTemplate, e.ctx));
                    a = document.createElement("a");
                    a.download = getFileName(e.settings);
                    a.href = link;
    
                    document.body.appendChild(a);
    
                    a.click();
    
                    document.body.removeChild(a);
                }
    
                return true;
            }
        };
    
        function getFileName(settings) {
            return ( settings.filename ? settings.filename : "table2excel" ) +
                   ( settings.fileext ? settings.fileext : ".xls" );
        }
    
        $.fn[ pluginName ] = function ( options ) {
            var e = this;
                e.each(function() {
                    if ( !$.data( e, "plugin_" + pluginName ) ) {
                        $.data( e, "plugin_" + pluginName, new Plugin( this, options ) );
                    }
                });
    
            // chain jQuery functions
            return e;
        };
    
    })( jQuery, window, document );
    
    jquery.table2excel.min.js
    /*
     *  jQuery table2excel - v1.0.2
     *  jQuery plugin to export an .xls file in browser from an HTML table
     *  https://github.com/rainabba/jquery-table2excel
     *
     *  Made by rainabba
     *  Under MIT License
     */
    !function(a,b,c,d){function e(b,c){this.element=b,this.settings=a.extend({},h,c),this._defaults=h,this._name=g,this.init()}function f(a){return(a.filename?a.filename:"table2excel")+(a.fileext?a.fileext:".xlsx")}var g="table2excel",h={exclude:".noExl",name:"Table2Excel"};e.prototype={init:function(){var b=this,c='<meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8">';b.template={head:'<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">'+c+"<head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets>",sheet:{head:"<x:ExcelWorksheet><x:Name>",tail:"</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>"},mid:"</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body>",table:{head:"<table>",tail:"</table>"},foot:"</body></html>"},b.tableRows=[],a(b.element).each(function(c,d){var e="";a(d).find("tr").not(b.settings.exclude).each(function(b,c){e+="<tr>"+a(c).html()+"</tr>"}),b.tableRows.push(e)}),b.tableToExcel(b.tableRows,b.settings.name,b.settings.sheetName)},tableToExcel:function(d,e,g){var h,i,j,k=this,l="";if(k.uri="data:application/vnd.ms-excel;base64,",k.base64=function(a){return b.btoa(unescape(encodeURIComponent(a)))},k.format=function(a,b){return a.replace(/{(w+)}/g,function(a,c){return b[c]})},g="undefined"==typeof g?"Sheet":g,k.ctx={worksheet:e||"Worksheet",table:d,sheetName:g},l=k.template.head,a.isArray(d))for(h in d)l+=k.template.sheet.head+g+h+k.template.sheet.tail;if(l+=k.template.mid,a.isArray(d))for(h in d)l+=k.template.table.head+"{table"+h+"}"+k.template.table.tail;l+=k.template.foot;for(h in d)k.ctx["table"+h]=d[h];if(delete k.ctx.table,"undefined"!=typeof msie&&msie>0||navigator.userAgent.match(/Trident.*rv:11./))if("undefined"!=typeof Blob){l=[l];var m=new Blob(l,{type:"text/html"});b.navigator.msSaveBlob(m,f(k.settings))}else txtArea1.document.open("text/html","replace"),txtArea1.document.write(k.format(l,k.ctx)),txtArea1.document.close(),txtArea1.focus(),sa=txtArea1.document.execCommand("SaveAs",!0,f(k.settings));else i=k.uri+k.base64(k.format(l,k.ctx)),j=c.createElement("a"),j.download=f(k.settings),j.href=i,c.body.appendChild(j),j.click(),c.body.removeChild(j);return!0}},a.fn[g]=function(b){var c=this;return c.each(function(){a.data(c,"plugin_"+g)||a.data(c,"plugin_"+g,new e(this,b))}),c}}(jQuery,window,document);
  • 相关阅读:
    用laravel MaatwebsiteExcel 设置格式和导出
    PHP实现微信开放平台扫码登录源码(微信第三方登陆)
    oss存储前端直传向后台请求临时授权(下)
    小记
    String是个啥?
    ZAB协议
    基于Zookeeper实现客户端动态监听服务器上下线
    反射反射,程序员的快乐
    MapReduce工作流程及Shuffle原理概述
    自定义InputFormat
  • 原文地址:https://www.cnblogs.com/kexb/p/8548666.html
Copyright © 2020-2023  润新知