There are many ways to export html table to excel, but what about jtable as it does not contain html tags like <table>
in the page, it just calls by id like <div id="table"></div>
I have simple solution which is working on Chrome, but not working on IE
Button to export:
<a id="dlink" onclick="tableToExcel('StudentTableContainer', 'name', 'TestExcelFile.xls')">Export to excel</a>
Jtable:
<div id="StudentTableContainer"></div>
Javascript:
var tableToExcel = (function () {
var uri = 'data:application/vnd.ms-excel;base64,'
, template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>'
, base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }
, format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }
return function (table, name, filename) {
if (!table.nodeType) table = document.getElementById(table)
var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }
document.getElementById("dlink").href = uri + base64(format(template, ctx));
document.getElementById("dlink").download = filename;
document.getElementById("dlink").click();
}
})()
I am using vb.net to get the sql values for jtable
In order to have all the rows exported you can create another jtable without paging that you load only before exporting and which is invisible to the end user. Should be something like:
$('#PersonTable').jtable({
//...
paging: false, //Set paging disabled
actions: {
//...
},
fields: {
//...
}
});
After you have the full jtable you can export it with the solution from this forum. You can specify in this second jtable only the columns that you want to export in excel.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With