Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save thotbox/710a9acd757cb012866b to your computer and use it in GitHub Desktop.
Save thotbox/710a9acd757cb012866b to your computer and use it in GitHub Desktop.
JavaScript: Export CSV From Table (cross platform)
function saCSV($table, filename) {
var $rows = $table.find('tr:has(td)');
var column_delimiter_temp = String.fromCharCode(11);
var row_delimiter_temp = String.fromCharCode(0);
var column_delimiter = '","';
var row_delimiter = '"\r\n"';
var csv = '"'+ $rows.map(function (i, row) {
var $row = $(row);
var $col = $row.find('td');
return $col.map(function (j, col) {
var $col = $(col);
var text = $col.text();
return text.replace(/"/g, '""');
})
.get().join(column_delimiter_temp);
})
.get().join(row_delimiter_temp)
.split(row_delimiter_temp).join(row_delimiter)
.split(column_delimiter_temp).join(column_delimiter) + '"',
csvData = 'data:application/csv;charset=utf-8,' + encodeURIComponent(csv);
if (navigator.appName == 'Microsoft Internet Explorer') {
var oWin = window.open('text/html', 'replace');
csv = 'sep=,\r\n' + csv;
oWin.document.write(csv);
oWin.document.close();
oWin.document.execCommand('SaveAs', true, filename + '.csv');
oWin.close();
} else {
$(this).attr({'download': filename, 'href': csvData, 'target': '_blank'});
}
}
$('#sa-export').click(function(e) {
var filename = 'export.csv';
saCSV.apply(this, [$('.sa-report-data table'), filename]);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment