Created
May 4, 2016 15:32
-
-
Save loretoparisi/2794f0a45b96ad5b8d7c1242644e2a79 to your computer and use it in GitHub Desktop.
JQuery HTML Table to CSV
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
jQuery.fn.table2CSV = function(options) { | |
var options = jQuery.extend({ | |
separator: ',', | |
header: [], | |
delivery: 'popup' // popup, value | |
}, | |
options); | |
var csvData = []; | |
var headerArr = []; | |
var el = this; | |
//header | |
var numCols = options.header.length; | |
var tmpRow = []; // construct header avalible array | |
if (numCols > 0) { | |
for (var i = 0; i < numCols; i++) { | |
tmpRow[tmpRow.length] = formatData(options.header[i]); | |
} | |
} else { | |
$(el).filter(':visible').find('th').each(function() { | |
if ($(this).css('display') != 'none') tmpRow[tmpRow.length] = formatData($(this).html()); | |
}); | |
} | |
row2CSV(tmpRow); | |
// actual data | |
$(el).find('tr').each(function() { | |
var tmpRow = []; | |
$(this).filter(':visible').find('td').each(function() { | |
if ($(this).css('display') != 'none') tmpRow[tmpRow.length] = formatData($(this).html()); | |
}); | |
row2CSV(tmpRow); | |
}); | |
if (options.delivery == 'popup') { | |
var mydata = csvData.join('\n'); | |
return popup(mydata); | |
} | |
else if(options.download) { | |
var mydata = csvData.join('\n'); | |
download(mydata,options.filename) | |
} | |
else { | |
var mydata = csvData.join('\n'); | |
return mydata; | |
} | |
function row2CSV(tmpRow) { | |
var tmp = tmpRow.join('') // to remove any blank rows | |
// alert(tmp); | |
if (tmpRow.length > 0 && tmp != '') { | |
var mystr = tmpRow.join(options.separator); | |
csvData[csvData.length] = mystr; | |
} | |
} | |
function download(csv,filename) { | |
var pp = document.createElement('a'); | |
pp.setAttribute('href', 'data:application/csv;charset=utf-8,' + encodeURIComponent(csv) ); | |
pp.setAttribute('download', filename); | |
pp.click(); | |
} | |
function formatData(input) { | |
// replace " with “ | |
var regexp = new RegExp(/["]/g); | |
var output = input.replace(regexp, "“"); | |
//HTML | |
var regexp = new RegExp(/\<[^\<]+\>/g); | |
var output = output.replace(regexp, ""); | |
if (output == "") return ''; | |
return '"' + output + '"'; | |
} | |
function popup(data) { | |
var generator = window.open('', 'csv', 'height=400,width=600'); | |
generator.document.write('<html><head><title>CSV</title>'); | |
generator.document.write('</head><body >'); | |
generator.document.write('<textArea cols=70 rows=15 wrap="off" >'); | |
generator.document.write(data); | |
generator.document.write('</textArea>'); | |
generator.document.write('</body></html>'); | |
generator.document.close(); | |
return true; | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Reference: This jQuery plugin is a modified version of table2CSV plugin.