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;
}
});
}