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