Skip to content

Instantly share code, notes, and snippets.

@bertold
Last active August 25, 2023 11:28
Show Gist options
  • Save bertold/c6b15742ae9c0322587117bf269ecb9a to your computer and use it in GitHub Desktop.
Save bertold/c6b15742ae9c0322587117bf269ecb9a to your computer and use it in GitHub Desktop.
javascript:(function(){
function getJavaScript(url, success) {
var script = document.createElement('script');
script.src = url;
var head = document.getElementsByTagName('head')[0],
done = false;
script.onload = script.onreadystatechange = function(){
if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {
done = true;
success();
script.onload = script.onreadystatechange = null;
head.removeChild(script);
}
};
head.appendChild(script);
}
function addCSVLinks() {
jQuery('.csvLink').remove();
jQuery('table').each(function(index){
jQuery(this).attr('data-csvtable', index).before('<a href="#" class="csvLink" data-forcsvtable="' + index + '">Export to CSV</a>');
});
jQuery('.csvLink').click(function(){
var text = '';
var csvTableIndex = jQuery(this).attr('data-forcsvtable');
jQuery('table[data-csvtable="' + csvTableIndex + '"] tr').each(function(){
jQuery('td, th', this).each(function(index){
if(index != 0) {
text += ',';
}
text += '"' + jQuery(this).text().replace(/\xa0/g,' ').replace(/\r?\n|\r/g, '').replace(/"/g, '""') + '"';
});
text += '\r\n';
});
jQuery('.csvLink').remove();
downloadCSVFile('TableExport.csv', 'text/csv', text);
});
}
function downloadCSVFile(filename, mime, text) {
if (window.navigator.msSaveOrOpenBlob){
// IE 10+
var blob = new Blob([decodeURIComponent(encodeURI(text))], {
type: 'text/csv;charset=utf-8'
});
window.navigator.msSaveBlob(blob, filename);
} else {
var pom = document.createElement('a');
pom.setAttribute('href', 'data:' + mime + ';charset=utf-8,' + encodeURIComponent(text));
pom.setAttribute('download', filename);
document.body.appendChild(pom);
pom.click();
document.body.removeChild(pom);
}
}
if(typeof jQuery == 'undefined') {
getJavaScript(
'//code.jquery.com/jquery-latest.min.js',
function(){
addCSVLinks();
}
)
} else {
addCSVLinks();
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment