8

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();

    }
})()
  • Can we make it to use on IE?
  • How can we display all the values of the table? (as this solution exports only displayed rows on the page)

I am using vb.net to get the sql values for jtable

4
  • Does your div id has "StudentTableContainer" or "table"? Commented May 26, 2015 at 6:00
  • table is generated in JavaScript file. I am just calling the id in div Commented May 26, 2015 at 6:03
  • Have you tried this solution? Commented Jun 1, 2015 at 16:58
  • What IE version are you using? Are there any javascript errors? Commented Jun 4, 2015 at 6:24

1 Answer 1

1

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.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.