Combinar celdas de Excel con Angular

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

Leave a Reply

Your email address will not be published. Required fields are marked *