How to export Datatables table to Excel which works in IE as well

前端 未结 1 836
面向向阳花
面向向阳花 2021-01-22 05:21

I am using

  var tableToExcel = (function() {
        var uri = \'data:application/vnd.ms-excel;base64,\'
        , template = \'

        
1条回答
  •  清酒与你
    2021-01-22 06:16

    I used jspdf to get the desired results.Following points i achieved:-

    1) This works in all versions of IE.
    2) You can give the freeze column and freeze row options also in Excel
    

    .

    Libraries I used

    1)downloadify.js 
    2)swfobject.js
    3)downloadify.swf
    

    Functions i used

    1)getHtmlForExport(); // gives the html of the table to be exported.
    2)tableToExcel();// converts html code to Microsoft Excel specific XML code
    3)handleExcelExport();// downloads excel specific XML to excel file.
    
    
    var tableToExcel = function (table, horizontalFreezeRowNo, VerticalFreezeRowNo) {
        var worksheetString = '';
        //worksheet freeze pane options 
        worksheetString += '2';
        if (horizontalFreezeRowNo !== undefined)
            worksheetString += '' + horizontalFreezeRowNo + '' + horizontalFreezeRowNo + '';
        if (VerticalFreezeRowNo !== undefined)
            worksheetString += '' + VerticalFreezeRowNo + '' + VerticalFreezeRowNo + '';
    
        worksheetString += '';
    
        var template = '{table}
    ' , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }; if (!table.nodeType) table = document.getElementById(table) var ctx = { table: table.innerHTML } $("#exportTable").remove(); return format(template, ctx) } function handleExcelExport(gridConfig) { $("." + gridConfig.objectID + "Export").downloadify({ filename: function () { var elementClicked = this.el; var headerText = $(elementClicked).parents('.portlet').find('.portlet-title h8').text(); var fileName; if (elementClicked == undefined || headerText == undefined) { fileName = "excel" } else { fileName = headerText.toString().trim() } return fileName + ".xls"; }, data: function () { var elementClicked = this.el; getHtmlForExport(elementClicked, gridConfig); return (tableToExcel('exportTable', 1, 1));// table id, horizontal freeze,vertical freeze }, onComplete: function () { }, onCancel: function () { }, onError: function () { }, swf: 'resources/js/downloadify/downloadify.swf', downloadImage: 'resources/css/images/excelDownload.png', width: 65, height: 20, transparent: true, append: false }); }

    and for getHtmlForExport you have to write the logic to get the html of table you want to export .

    0 讨论(0)
提交回复
热议问题