From 516cdcf757b907631a721e2e3a835e31e72de963 Mon Sep 17 00:00:00 2001 From: hhurz Date: Wed, 5 Aug 2015 16:12:15 +0200 Subject: [PATCH] export hidden cells optionally --- README.md | 1 + tableExport.js | 6 +- tableExport.min.js | 48 ++++++++-------- test/index.html | 135 ++++++++++++++++++++++++++++++--------------- 4 files changed, 118 insertions(+), 72 deletions(-) diff --git a/README.md b/README.md index 18aa40f..f85ce05 100644 --- a/README.md +++ b/README.md @@ -115,5 +115,6 @@ Optional html data attributes (can be set while generating the table you want to export) ```html +... -> hidden cell will be exported ... -> cell will not be exported ``` diff --git a/tableExport.js b/tableExport.js index b9f10d2..b87c5b1 100644 --- a/tableExport.js +++ b/tableExport.js @@ -608,8 +608,10 @@ function ForEachVisibleCell(tableRow, selector, rowIndex, cellcallback) { $(tableRow).filter(':visible').find(selector).each(function (colIndex) { - if ($(this).css('display') != 'none' && - $(this).data("tableexport-display") != 'none') { + 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 diff --git a/tableExport.min.js b/tableExport.min.js index 9202869..249dd00 100644 --- a/tableExport.min.js +++ b/tableExport.min.js @@ -1,24 +1,24 @@ -(function(f){f.fn.extend({tableExport:function(t){function u(k,e,d,g){f(k).filter(":visible").find(e).each(function(k){if("none"!=f(this).css("display")&&"none"!=f(this).data("tableexport-display")&&-1==a.ignoreColumn.indexOf(k)&&"function"===typeof g){var e=0;if("undefined"!=typeof x[d]&&0f?g+=String.fromCharCode(f):(127f?g+=String.fromCharCode(f>>6|192):(g+=String.fromCharCode(f>>12|224),g+=String.fromCharCode(f>>6&63|128)),g+=String.fromCharCode(f&63|128));for(a=g;l>2,d=(d&3)<<4|g>>4,h=(g&15)<<2|b>>6,m=b&63,isNaN(g)?h=m=64:isNaN(b)&&(m=64),e=e+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(f)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(d)+ -"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(h)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(m);return e}var a={csvSeparator:",",csvEnclosure:'"',consoleLog:!1,displayTableName:!1,escape:!1,excelstyles:["border-bottom","border-top","border-left","border-right"],fileName:"tableExport",htmlContent:!1,ignoreColumn:[],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}}},onCellData:null,outputMode:"file",tbodySelector:"tr",theadSelector:"tr",tableName:"myTableName",type:"csv",worksheetName:"xlsWorksheetName"},D=null,x=[];f.extend(!0,a,t);if("csv"==a.type||"txt"==a.type){var p="",n=0;f(this).find("thead").first().find(a.theadSelector).each(function(){trData="";u(this,"th,td",n,function(k,e,d){trData+=I(k,e,d)+a.csvSeparator});trData=f.trim(trData).substring(0,trData.length-1);0',q=q+"";f(this).find("thead").first().find(a.theadSelector).each(function(){u(this,"th,td",n,function(a,e,d){q+=""+v(a,e,d)+""});n++});var q=q+"",E=1;f(this).find("tbody").first().find(a.tbodySelector).each(function(){var a=1,e="";u(this,"td",n,function(d,g,b){e+=""+v(d,g,b)+ -"";a++});""!=e&&(q+=''+e+"",E++);n++});q+="";!0===a.consoleLog&&console.log(q);if("string"==a.outputMode)return q;t=y(q);if("base64"==a.outputMode)return t;try{w=new Blob([q],{type:"application/xml;charset=utf-8"}),saveAs(w,a.fileName+".xml")}catch(S){z(a.fileName+".xml","data:application/xml;charset=utf-8;base64,"+t)}}else if("excel"==a.type||"doc"==a.type){var n=0,h="";f(this).find("thead").first().find(a.theadSelector).each(function(){h+= -"";u(this,"th,td",n,function(b,e,d){if(null!=b){h+=""}});n++;h+=""});E=1;f(this).find("tbody").first().find(a.tbodySelector).each(function(){h+="";u(this,"td",n,function(b,e,d){if(null!=b){h+=""}});E++;n++;h+=""});a.displayTableName&&(h+="");h+="
"+v(b,e,d)+"
"+v(b,e,d)+"
"+v(f("

"+a.tableName+"

"))+"
";!0===a.consoleLog&&console.log(h);b="";b+='';b=b+'';b+="";"excel"===a.type&&(b+="\x3c!--[if gte mso 9]>",b+="",b+="",b+="",b+="",b+="",b+=a.worksheetName,b+="",b+="",b+="",b+="",b+="",b+="",b+="",b+= -"",b+="";b+="";b+=h;b+="";b+="";if("string"==a.outputMode)return b;t=y(b);if("base64"===a.outputMode)return t;var L="excel"===a.type?"xls":"doc";try{w=new Blob([b],{type:"application/vnd.ms-"+a.type}),saveAs(w,a.fileName+"."+L)}catch(T){z(a.fileName+"."+L,"data:application/vnd.ms-"+a.type+";base64,"+t)}}else if("png"==a.type)html2canvas(f(this),{onrendered:function(b){b=b.toDataURL();b=b.substring(22);for(var e=atob(b),d=new ArrayBuffer(e.length), -g=new Uint8Array(d),f=0;fN){a>B.a0[0]&&(F="a0",C="l");for(var b in B)B.hasOwnProperty(b)&&B[b][1]>a&&(F=b,C="l",B[b][0]>a&&(C="p"));N=a}}});a.jspdf.format=""==F?"a4":F;a.jspdf.orientation= -""==C?"w":C}l.doc=new jsPDF(a.jspdf.orientation,a.jspdf.unit,a.jspdf.format);f(this).filter(":visible").each(function(){if("none"!=f(this).css("display")){var b,e=0,d={};l.columns=[];l.rows=[];l.rowoptions={};if("function"===typeof l.onTable&&!1===l.onTable(f(this),a))return!0;Object.keys(a.jspdf.autotable).forEach(function(b){d[b]=a.jspdf.autotable[b]});d.margins={};f.extend(!0,d.margins,a.jspdf.margins);"function"!==typeof d.renderCell&&(d.renderCell=function(a,b,e,d,f,h,m,k){var l=k.tableExport.doc, -n=0;l.setFillColor(0===m%2?245:255);l.setTextColor(50);l.rect(a,b,e,d,"F");b+=k.lineHeight/2+l.autoTableTextHeight()/2-2.5;"undefined"!=typeof k.tableExport.columns[f]&&(d=k.tableExport.columns[f].style.align,f=k.tableExport.rowoptions[m+1+":"+f],void 0!==f&&(d=f.style.align),"right"==d?n=e-l.getStringUnitWidth(""+h)*l.internal.getFontSize()-k.padding:"center"==d&&(n=(e-l.getStringUnitWidth(""+h)*l.internal.getFontSize())/2));nf?g+=String.fromCharCode(f):(127f?g+=String.fromCharCode(f>>6|192):(g+=String.fromCharCode(f>>12|224),g+=String.fromCharCode(f>>6&63|128)),g+=String.fromCharCode(f&63|128));for(a=g;l>2,d=(d&3)<<4|g>>4,h=(g&15)<<2|b>>6,m=b&63,isNaN(g)?h=m=64:isNaN(b)&&(m=64),e=e+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(f)+ +"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(d)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(h)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(m);return e}var a={csvSeparator:",",csvEnclosure:'"',consoleLog:!1,displayTableName:!1,escape:!1,excelstyles:["border-bottom","border-top","border-left","border-right"],fileName:"tableExport",htmlContent:!1,ignoreColumn:[],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}}},onCellData:null,outputMode:"file",tbodySelector:"tr",theadSelector:"tr",tableName:"myTableName",type:"csv",worksheetName:"xlsWorksheetName"},D=null,x=[];f.extend(!0,a,t);if("csv"==a.type||"txt"==a.type){var p="",n=0;f(this).find("thead").first().find(a.theadSelector).each(function(){trData="";u(this,"th,td",n,function(k,e,d){trData+=I(k,e,d)+a.csvSeparator}); +trData=f.trim(trData).substring(0,trData.length-1);0',q=q+"";f(this).find("thead").first().find(a.theadSelector).each(function(){u(this,"th,td",n,function(a,e,d){q+=""+v(a,e,d)+""});n++});var q=q+"",E=1;f(this).find("tbody").first().find(a.tbodySelector).each(function(){var a= +1,e="";u(this,"td",n,function(d,g,b){e+=""+v(d,g,b)+"";a++});""!=e&&(q+=''+e+"",E++);n++});q+="";!0===a.consoleLog&&console.log(q);if("string"==a.outputMode)return q;t=y(q);if("base64"==a.outputMode)return t;try{w=new Blob([q],{type:"application/xml;charset=utf-8"}),saveAs(w,a.fileName+".xml")}catch(S){z(a.fileName+".xml","data:application/xml;charset=utf-8;base64,"+t)}}else if("excel"==a.type||"doc"==a.type){var n= +0,h="";f(this).find("thead").first().find(a.theadSelector).each(function(){h+="";u(this,"th,td",n,function(b,e,d){if(null!=b){h+=""}});n++;h+=""});E=1;f(this).find("tbody").first().find(a.tbodySelector).each(function(){h+="";u(this,"td",n,function(b,e,d){if(null!=b){h+=""}});E++;n++;h+=""});a.displayTableName&&(h+="");h+="
"+v(b,e,d)+"
"+v(b,e,d)+"
"+v(f("

"+a.tableName+"

"))+"
";!0===a.consoleLog&&console.log(h);b="";b+='';b=b+'';b+="";"excel"===a.type&&(b+="\x3c!--[if gte mso 9]>",b+="",b+="",b+="",b+="",b+="",b+=a.worksheetName,b+="",b+="",b+="", +b+="",b+="",b+="",b+="",b+="",b+="";b+="";b+=h;b+="";b+="";if("string"==a.outputMode)return b;t=y(b);if("base64"===a.outputMode)return t;var L="excel"===a.type?"xls":"doc";try{w=new Blob([b],{type:"application/vnd.ms-"+a.type}),saveAs(w,a.fileName+"."+L)}catch(T){z(a.fileName+"."+L,"data:application/vnd.ms-"+a.type+";base64,"+t)}}else if("png"==a.type)html2canvas(f(this), +{onrendered:function(b){b=b.toDataURL();b=b.substring(22);for(var e=atob(b),d=new ArrayBuffer(e.length),g=new Uint8Array(d),f=0;fN){a>B.a0[0]&&(F="a0",C="l");for(var b in B)B.hasOwnProperty(b)&& +B[b][1]>a&&(F=b,C="l",B[b][0]>a&&(C="p"));N=a}}});a.jspdf.format=""==F?"a4":F;a.jspdf.orientation=""==C?"w":C}l.doc=new jsPDF(a.jspdf.orientation,a.jspdf.unit,a.jspdf.format);f(this).filter(":visible").each(function(){if("none"!=f(this).css("display")){var b,e=0,d={};l.columns=[];l.rows=[];l.rowoptions={};if("function"===typeof l.onTable&&!1===l.onTable(f(this),a))return!0;Object.keys(a.jspdf.autotable).forEach(function(b){d[b]=a.jspdf.autotable[b]});d.margins={};f.extend(!0,d.margins,a.jspdf.margins); +"function"!==typeof d.renderCell&&(d.renderCell=function(a,b,e,d,f,h,m,k){var l=k.tableExport.doc,n=0;l.setFillColor(0===m%2?245:255);l.setTextColor(50);l.rect(a,b,e,d,"F");b+=k.lineHeight/2+l.autoTableTextHeight()/2-2.5;"undefined"!=typeof k.tableExport.columns[f]&&(d=k.tableExport.columns[f].style.align,f=k.tableExport.rowoptions[m+1+":"+f],void 0!==f&&(d=f.style.align),"right"==d?n=e-l.getStringUnitWidth(""+h)*l.internal.getFontSize()-k.padding:"center"==d&&(n=(e-l.getStringUnitWidth(""+h)*l.internal.getFontSize())/ +2));n