mesutd0nmez
10/12/2016 - 6:13 AM

Client Side Excel Aktarma

Client Side Excel Aktarma

function buildHtmlTable(gridOptions) {
    var table = document.createElement('table');
    table.id = "excelDataTable";
    document.body.appendChild(table);
    var table$ = $('<table/>');

    var columns = addAllColumnHeaders(gridOptions, table$);
    for (var i = 0 ; i < gridOptions.data.length ; i++) {
        var row$ = $('<tr/>');
        
        for (var colIndex = 0 ; colIndex < columns.length ; colIndex++) {            
            var cellValue = null;

            if (columns[colIndex].indexOf(".") > 0)
            {
                if (gridOptions.data[i][columns[colIndex].split(".")[0]] !== null)
                    cellValue = gridOptions.data[i][columns[colIndex].split(".")[0]][columns[colIndex].split(".")[1]];
                else
                    cellValue = "";
            } else
            {
                cellValue =gridOptions.data[i][columns[colIndex]];
            }

            if (cellValue == null) { cellValue = ""; }


            row$.append($('<td/>').html(cellValue.toString()));
            

           // row$.append($('<td/>').html("'"+cellValue));
        }
        table$.append(row$);
        //$("#excelDataTable").append(row$);
    }
    
    tableToExcel(table$.get(0), 'rapor');
};

function addAllColumnHeaders(gridOptions, tbl) {
    var columnSet = [];
    var headerTr$ = $('<tr/>');
    for (var j = 0; j < gridOptions.columnDefs.length; j++) {
        if (gridOptions.columnDefs[j].visible == undefined) {
            columnSet.push(gridOptions.columnDefs[j].name);
            headerTr$.append($('<th/>').html(gridOptions.columnDefs[j].displayName));
        }
    }
    tbl.append(headerTr$);
    return columnSet;
};

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"><meta http-equiv="content-type" content="text/html" charset="UTF-8"><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) {
        if (!table.nodeType) table = document.getElementById(table)
        var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }
        window.location.href = uri + base64(format(template, ctx))
    }
})()