(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,'filename.csv'); } 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 += ''; // 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 += "" + parseString($(this)) + ""; } } }); }); xml += ''; // Row Vs Column var rowCount = 1; $(el).find('tbody').find('tr').each(function () { xml += ''; var colCount = 0; $(this).filter(':visible').find('td').each(function (index, data) { if ($(this).css('display') != 'none') { if (defaults.ignoreColumn.indexOf(index) == -1) { xml += "" + parseString($(this)) + ""; } } colCount++; }); rowCount++; xml += ''; }); xml += '' 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 = ""; // Header $(el).find('thead').find('tr').each(function () { excel += ""; $(this).filter(':visible').find('th').each(function (index, data) { if ($(this).css('display') != 'none') { if (defaults.ignoreColumn.indexOf(index) == -1) { excel += ""; } } }); excel += ''; }); // Row Vs Column var rowCount = 1; $(el).find('tbody').find('tr').each(function () { excel += ""; var colCount = 0; $(this).filter(':visible').find('td').each(function (index, data) { if ($(this).css('display') != 'none') { if (defaults.ignoreColumn.indexOf(index) == -1) { excel += ""; } } colCount++; }); rowCount++; excel += ''; }); excel += '
" + parseString($(this)) + "
" + parseString($(this)) + "
' if (defaults.consoleLog == 'true') { console.log(excel); } var excelFile = ""; excelFile += ""; excelFile += ""; excelFile += ""; excelFile += ""; excelFile += excel; excelFile += ""; excelFile += ""; 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);