简体   繁体   English

在IE上的JavaScript中将Jtable导出为Excel

[英]Export jtable to excel in javascript on IE

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> 有很多方法可以将html表导出为ex​​cel,但是jtable呢,因为它在页面中不包含<table>这样的html标签,它只是通过id调用,例如<div id="table"></div>

I have simple solution which is working on Chrome, but not working on IE 我有一个简单的解决方案,它可以在Chrome上运行,但不能在IE上运行

Button to export: 导出按钮:

<a id="dlink"  onclick="tableToExcel('StudentTableContainer', 'name', 'TestExcelFile.xls')">Export to excel</a>

Jtable: Jtable:

<div id="StudentTableContainer"></div>

Javascript: 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? 我们可以使其在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 我正在使用vb.net获取jtable的sql值

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. 为了导出所有行,您可以创建另一个jtable而不分页,该分页仅在导出前加载,并且对最终用户不可见。 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 . 拥有完整的jtable之后,您可以将其与本论坛中的解决方案一起导出。 You can specify in this second jtable only the columns that you want to export in excel. 您可以在第二个jtable中仅指定要在excel中导出的列。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM