mesutd0nmez
12/7/2016 - 8:12 AM

Table To Excel

Table To Excel

function buildHtmlTable(gridOptions, queryName) {
    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 (columns[colIndex].indexOf("IsReady") > -1 || columns[colIndex].indexOf("IsMobile") > -1)
                    if (cellValue == false)
                        cellValue = "Hayır";
                    else
                        cellValue = "Evet";
                else if (cellValue != null && columns[colIndex].indexOf("BoutiqueId") > -1)
                    cellValue = "" + cellValue;
                
            }

            if (cellValue == null) { cellValue = ""; }
            if (cellValue != "") {
                isIntAndValid(cellValue) == true &&
                columns[colIndex].indexOf("PoId") == -1 &&
                columns[colIndex].indexOf("BoutiqueId") == -1 &&
                columns[colIndex].indexOf("BoutiqueSupplierId") == -1
                ? "" : cellValue = ("<div style='mso-number-format: \"\@\";'>" + cellValue + "</div>");
            }

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

           // row$.append($('<td/>').html("'"+cellValue));
        }
        table$.append(row$);
        //$("#excelDataTable").append(row$);
    }
    
    if (queryName == undefined)
        queryName = 'Talep Listesi';
    tableToExcel(table$.get(0), queryName);
};

function isIntAndValid(value) { //Deger 10001den kucukse ve sayi ise metne cevirme
    return !isNaN(parseInt(value));
}

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>' + gridOptions.columnDefs[j].displayName + '</th>');
        }
    }
    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 }
        var blob = new Blob([format(template, ctx)], { type: 'application/vnd.ms-excel', endings: 'native' });

        var today = new Date();
        var dt = today.toJSON().slice(0, 10).replace(new RegExp("-", 'g'), "");
        window.saveAs(blob, name.replace(new RegExp(" ", 'g'), "") + '-' + dt + '.xls');
    }
})();

window.saveAs || (window.saveAs = (window.navigator.msSaveBlob ? function (b, n) { return window.navigator.msSaveBlob(b, n); } : false) || window.webkitSaveAs || window.mozSaveAs || window.msSaveAs || (function () {

    // URL's
    window.URL || (window.URL = window.webkitURL);

    if (!window.URL) {
        return false;
    }

    return function (blob, name) {
        var url = URL.createObjectURL(blob);

        // Test for download link support
        if ("download" in document.createElement('a')) {

            var a = document.createElement('a');
            a.setAttribute('href', url);
            a.setAttribute('download', name);

            // Create Click event
            var clickEvent = document.createEvent("MouseEvent");
            clickEvent.initMouseEvent("click", true, true, window, 0,
				event.screenX, event.screenY, event.clientX, event.clientY,
				event.ctrlKey, event.altKey, event.shiftKey, event.metaKey,
				0, null);

            // dispatch click event to simulate download
            a.dispatchEvent(clickEvent);

        }
        else {
            // fallover, open resource in new tab.
            window.open(url, '_blank', '');
        }
    };

})());