let myExcelXML = (function() { let Workbook, WorkbookStart = ''; const WorkbookEnd = ''; let fs, SheetName = 'x', styleID = 1, columnWidth = 80, fileName = "x", uri, link; class myExcelXML { constructor(o,filename_str) { SheetName=filename_str; fileName = filename_str; let respArray = JSON.parse(o); let finalDataArray = []; for (let i = 0; i < respArray.length; i++) { finalDataArray.push(flatten(respArray[i])); } let s = JSON.stringify(finalDataArray); fs = s.replace(/&/gi, '&'); } downLoad() { const Worksheet = myXMLWorkSheet(SheetName, fs); WorkbookStart += myXMLStyles(styleID); Workbook = WorkbookStart + Worksheet + WorkbookEnd; uri = 'data:text/xls;charset=utf-8,' + encodeURIComponent(Workbook); link = document.createElement("a"); link.href = uri; link.style = "visibility:hidden"; link.download = fileName + ".xls"; document.body.appendChild(link); link.click(); document.body.removeChild(link); } get fileName() { return fileName; } set fileName(n) { fileName = n; } get SheetName() { return SheetName; } set SheetName(n) { SheetName = n; } get styleID() { return styleID; } set styleID(n) { styleID = n; } } const myXMLStyles = function(id) { let Styles = ''; return Styles; } const myXMLWorkSheet = function(name, o) { const Table = myXMLTable(o); let WorksheetStart = ''; const WorksheetEnd = ''; return WorksheetStart + Table + WorksheetEnd; } const myXMLTable = function(o) { let TableStart = ''; const TableEnd = ''; let judul; const tableData = JSON.parse(o); if (tableData.length > 0) { const columnHeader = Object.keys(tableData[0]); let rowData; for (let i = 0; i < columnHeader.length; i++) { TableStart += myXMLColumn(columnWidth); } for (let j = 0; j < tableData.length; j++) { rowData += myXMLRow(j+1,tableData[j], columnHeader); } TableStart +=judul; TableStart += myXMLHead(1, columnHeader); TableStart += rowData; } return TableStart + TableEnd; } const myXMLColumn = function(w) { return ''; } const myXMLHead = function(id, h) { let HeadStart = ''; const HeadEnd = ''; const Cell = myXMLCell("NO"); HeadStart += Cell; for (let i = 0; i < h.length; i++) { const Cell = myXMLCell(h[i].toUpperCase()); HeadStart += Cell; } return HeadStart + HeadEnd; } const myXMLRowText = function(txt) { let RowS = ''; let RowE = ''; let CTxt = myXMLCell(txt); RowS += CTxt; return RowS + RowE; } const myXMLRow = function(no,r, h) { let RowStart = ''; const RowEnd = ''; const Cell = myXMLCell(no); RowStart += Cell; for (let i = 0; i < h.length; i++) { const Cell = myXMLCell(r[h[i]]); RowStart += Cell; } return RowStart + RowEnd; } const myXMLCell = function(n) { let CellStart = ''; const CellEnd = ''; const Data = myXMLData(n); CellStart += Data; return CellStart + CellEnd; } const myXMLData = function(d) { let DataStart = ''; const DataEnd = ''; return DataStart + d + DataEnd; } const flatten = function(obj) { var obj1 = JSON.parse(JSON.stringify(obj)); const obj2 = JSON.parse(JSON.stringify(obj)); if (typeof obj === 'object') { for (var k1 in obj2) { if (obj2.hasOwnProperty(k1)) { if (typeof obj2[k1] === 'object' && obj2[k1] !== null) { delete obj1[k1] for (var k2 in obj2[k1]) { if (obj2[k1].hasOwnProperty(k2)) { obj1[k1 + '-' + k2] = obj2[k1][k2]; } } } } } var hasObject = false; for (var key in obj1) { if (obj1.hasOwnProperty(key)) { if (typeof obj1[key] === 'object' && obj1[key] !== null) { hasObject = true; } } } if (hasObject) { return flatten(obj1); } else { return obj1; } } else { return obj1; } } return myExcelXML; })(); // Function to export JSON data to Excel function exportJsonToExcel(jsonData, namaSheet, namaFile) { // Create a new workbook const workbook = XLSX.utils.book_new(); // Convert JSON data to a worksheet const worksheet = XLSX.utils.json_to_sheet(jsonData); // Append the worksheet to the workbook XLSX.utils.book_append_sheet(workbook, worksheet, namaSheet); // Export the workbook as an Excel file XLSX.writeFile(workbook, namaFile + ".xlsx"); } function downloadExcelDataCabang(){ var json_dt = { } var url = BASE_URL+LOGIN_DT.config.API_URL_CABANG_LIST; $.ajax({ type: 'POST', url: url, headers: { "Authorization": "Bearer "+LOGIN_DT.access_token, }, data: json_dt, success: function(resp) { // var myTestXML = new myExcelXML(JSON.stringify(resp.data),"List_Cabang"); // myTestXML.downLoad(); var test = exportJsonToExcel(resp.data, "List Cabang", "List_Cabang"); }, error: function(jqXHR,error, errorThrown) { alert("RRP"+jqXHR.responseText+" -- "+error); txt +=""; document.getElementById(div_id).innerHTML=txt; } }); }