top of page

Convertir JSON a Excel con Javascript

Código simple para generar un archivo .csv desde un objeto JSON en javascript

function ConvertJSONToCsv(JSONData, fileName, ShowLabel) {
   

 if (fileName == null || fileName=='') {
        fileName = 'My export';
    }

    if (ShowLabel==null ||  ShowLabel=='') {
        ShowLabel = true;
    }

    var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;
    var CSV = '';
    if (ShowLabel) {
        var row = "";
        for (var index in arrData[0]) {
            row += index + ',';
        }
        row = row.slice(0, -1);
        CSV += row + '\r\n';
    }
    for (var i = 0; i < arrData.length; i++) {
        var row = "";
        for (var index in arrData[i]) {
            //var arrValue = arrData[i][index] == null ? "" : '="' + arrData[i][index] + '"';
            var arrValue = arrData[i][index] == null ? "" : '"' + arrData[i][index] + '"';
            row += arrValue + ',';
        }

        row.slice(0, row.length - 1);
        CSV += row + '\r\n';
    }

    if (CSV == '') {
        growl.error("Invalid data");
        return;
    }

    // Edge or IE 
    if (navigator.appVersion.indexOf("Win") != -1 && (navigator.userAgent.match(/msie/i) || navigator.userAgent.match(/trident/i)) || window.navigator.userAgent.indexOf("Edge") > -1) {
        var blob = new Blob([CSV]);
        if (window.navigator.msSaveOrOpenBlob)
            window.navigator.msSaveBlob(blob, fileName + ".csv");

    } else {
        //Mozilla Firefox or Chrome
        var uri = 'data:application/csv;charset=utf-8,' + escape(CSV);
        var Link = document.createElement("a");
        Link.href = uri;
        Link.style = "visibility:hidden";
        Link.download = fileName + ".csv";
        document.body.appendChild(Link);
        Link.click();
        document.body.removeChild(Link);

    }

}

Referencias

https://github.com/mholt/PapaParse/issues/175 

https://ciphertrick.com/2014/12/07/download-json-data-in-csv-format-cross-browser-support/

bottom of page