diff --git a/tableExport.jquery.json b/tableExport.jquery.json deleted file mode 100644 index 8b137891..00000000 --- a/tableExport.jquery.json +++ /dev/null @@ -1 +0,0 @@ - diff --git a/tableExport.js b/tableExport.js index 1bfaa0fc..d2b3c782 100644 --- a/tableExport.js +++ b/tableExport.js @@ -1,6 +1,9 @@ /*The MIT License (MIT) -Copyright (c) 2014 https://github.com/kayalshri/ +Oririnal code (c) 2014 https://github.com/kayalshri/ + +Copyright (c) 2014 https://github.com/bL0p/ + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -24,336 +27,349 @@ THE SOFTWARE.*/ $.fn.extend({ tableExport: function(options) { var defaults = { - separator: ',', - ignoreColumn: [], - tableName:'yourTableName', - type:'csv', - pdfFontSize:14, - pdfLeftMargin:20, - escape:'true', - htmlContent:'false', - consoleLog:'false' - }; + 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 += ''; + 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).substring(0, tdData.length -1); + }); + + //output + if(defaults.consoleLog == 'true'){ + console.log(tdData); + } + + downloadFile(tdData, 'plain/text', 'exportData.' + defaults.type); + }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); + } + + downloadFile(tdData, 'plain/text', 'exportData.' + defaults.type); + }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 jsonContent = JSON.stringify(jsonExportArray); + downloadFile(jsonContent, 'plain/text', 'exportData.' + defaults.type); + }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); + // 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); + } + + downloadFile(xml, 'plain/text', 'exportData.' + defaults.type); - }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 += ""; + }else if(defaults.type == 'excel' || defaults.type == 'doc'){ + //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); + var fileType, fileExtension; + + if(defaults.type == 'excel') { + fileType = 'application/vnd.ms-excel'; + fileExtension = 'xls'; + } else if(defaults.type == 'doc') { + fileType = 'application/msword'; + fileExtension = 'doc'; + } + downloadFile(excelFile, fileType, 'exportData.' + fileExtension); + + }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 downloadFile(data, fileType, filename) { + var pom = document.createElement('a'); + + var blob = new Blob([data], { type: fileType }); + var url = URL.createObjectURL(blob); + pom.href = url; + + pom.setAttribute('download', filename); + pom.click(); + } + + + 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); diff --git a/test/index.html b/test/index.html new file mode 100644 index 00000000..ee1f18a6 --- /dev/null +++ b/test/index.html @@ -0,0 +1,54 @@ + + +Test tableExport + + + +

Table with thead and tbody

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Header 1Header 2Header 3
Row 1 Col 1Row 1 Col 2Row 1 Col 3
Row 2 Col 1Row 2 Col 2Row 3 Col 3
Row 3 Col 1Row 3 Col 2Row 3 Col 3
+ +
+ + + + + + + + +
+ + + + + + \ No newline at end of file