(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 += "\n"; $(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 += "\n"; $(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);