Método para agregar columnas combinadas a un excel con la librería xlsx desde Angular:
public exportAsExcelFileReportWithTittleAndFieldsMerge(jsonTittle: any[], json: any[], encabezados: any[], excelFileName: string): void { let worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(jsonTittle, { cellDates: true }); let merges = []; let columnsHeaders = []; const fila = 5; //Número de fila donde se van a agregar las celdas mezcladas for (let i = 0; i < encabezados.length; i++) { let encabezado = encabezados[i]; XLSX.utils.sheet_add_aoa(worksheet, [[encabezado.titulo]], { origin: String.fromCharCode(96 + encabezado.inicia + 1).toUpperCase() + '6' }); columnsHeaders.push(encabezado.titulo); let merge = { s: { r: fila, c: encabezado.inicia }, e: { r: fila, c: encabezado.finaliza } }; merges.push(merge); } worksheet["!merges"] = merges; XLSX.utils.sheet_add_json(worksheet, json, { origin: "A" + (fila + 2), cellDates: true }); const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] }; const excelBuffer: any = XLSX.write(workbook, { bookType: 'xls', type: 'array', cellDates: true }); this.saveAsExcelFile(excelBuffer, excelFileName); }
Ejemplo de JSON de encabezado:
let encabezados = [ { 'titulo': 'Group Header 1', 'inicia': 0, 'finaliza': 3 }, { 'titulo': 'Group Header 2', 'inicia': 4, 'finaliza': 5 }, { 'titulo': 'Group Header 3', 'inicia': 6, 'finaliza': 10 } ];
No hay comentarios