با استفاده از این تابع میتوان ورودی JSON با عمق 2 شئ داخلی را به یک پرونده XLS (همان TAB Separated Values) تبدیل و دانلود کرد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
function jsonToXls(JsonObject) { if (!JsonObject) return; // Construct csv var csv = []; Object.entries(JsonObject).forEach(([paramKey, paramValue]) => { csv.push(paramKey); var keys = []; var values = []; Object.entries(paramValue).forEach(([key, value]) => { keys.push(key); values.push(value); }); csv.push(keys.join('\t')); csv.push(values.join('\t')); csv.push(''); }); var csv_string = csv.join('\n'); var filename = (new Date().toLocaleDateString('fa-IR', { month: '2-digit', day: '2-digit', year: 'numeric' })).replace(/[۰-۹]/g, d => '۰۱۲۳۴۵۶۷۸۹'.indexOf(d)) + '_json.xls'; var link = document.createElement('a'); link.style.display = 'none'; link.setAttribute('target', '_blank'); link.setAttribute('href', 'data:text/csv;charset=utf-8,' + encodeURIComponent(csv_string)); link.setAttribute('download', filename); document.body.appendChild(link); link.click(); document.body.removeChild(link); } |