@jcbautistam/custom-table
Version:
Librería de tabla reutilizable con acciones, filtros, exportación y más.
49 lines • 7.55 kB
JavaScript
import { Injectable } from '@angular/core';
import * as XLSX from 'xlsx';
import { DateTimeService } from './DateTime.service';
import * as i0 from "@angular/core";
import * as i1 from "./DateTime.service";
export class ExportTableExcelService {
constructor(dateTimeService) {
this.dateTimeService = dateTimeService;
}
exportToExcel(tableId, name, dataList, columnsDate) {
try {
let timeSpan = this.dateTimeService.getformatDate(new Date(), 'yyyyMMdd');
let fileName = `${name || 'Export'}_${timeSpan}.xlsx`;
if (dataList && dataList.length > 0) {
// Convertir valores booleanos de la columna "activo" a "activo" o "inactivo"
const modifiedDataList = dataList.map(item => {
if (item.hasOwnProperty('Activo')) {
console.log('column', item);
return { ...item, Activo: item.Activo ? 'activo' : 'inactivo' };
}
return item;
});
const workSheet = XLSX.utils.json_to_sheet(modifiedDataList);
// Ajustar el ancho de las columnas
const columnWidths = modifiedDataList[0] ? Object.keys(modifiedDataList[0]).map(() => ({ wpx: 100 })) : [];
workSheet['!cols'] = columnWidths;
const workBook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workBook, workSheet, name?.substring(0, 31) || 'Sheet1');
XLSX.writeFile(workBook, fileName);
console.log(`Archivo ${fileName} generado exitosamente.`);
}
else {
throw new Error('No hay datos para exportar.');
}
}
catch (error) {
console.error('Error al generar el archivo Excel:', error);
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ExportTableExcelService, deps: [{ token: i1.DateTimeService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ExportTableExcelService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ExportTableExcelService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: function () { return [{ type: i1.DateTimeService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwb3J0VGFibGVFeGNlbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3VzdG9tLXRhYmxlL3NyYy9saWIvU2VydmljZXMvRXhwb3J0VGFibGVFeGNlbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFLckQsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxZQUFvQixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFBRyxDQUFDO0lBRXhELGFBQWEsQ0FBQyxPQUFlLEVBQUUsSUFBYSxFQUFFLFFBQWdCLEVBQUUsV0FBc0I7UUFDcEYsSUFBSTtZQUNGLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDMUUsSUFBSSxRQUFRLEdBQUcsR0FBRyxJQUFJLElBQUksUUFBUSxJQUFJLFFBQVEsT0FBTyxDQUFDO1lBRXRELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNuQyw2RUFBNkU7Z0JBQzdFLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDM0MsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO3dCQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQzt3QkFDNUIsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO3FCQUNqRTtvQkFDRCxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDLENBQUMsQ0FBQztnQkFFSCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUU3RCxtQ0FBbUM7Z0JBQ25DLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzNHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxZQUFZLENBQUM7Z0JBRWxDLE1BQU0sUUFBUSxHQUFrQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUMxQixRQUFRLEVBQ1IsU0FBUyxFQUNULElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FDbkMsQ0FBQztnQkFDRixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLFFBQVEseUJBQXlCLENBQUMsQ0FBQzthQUMzRDtpQkFBTTtnQkFDTCxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7YUFDaEQ7U0FDRjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM1RDtJQUNILENBQUM7OEdBdENVLHVCQUF1QjtrSEFBdkIsdUJBQXVCLGNBRnRCLE1BQU07OzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XHJcbmltcG9ydCB7IERhdGVUaW1lU2VydmljZSB9IGZyb20gJy4vRGF0ZVRpbWUuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXhwb3J0VGFibGVFeGNlbFNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0ZVRpbWVTZXJ2aWNlOiBEYXRlVGltZVNlcnZpY2UpIHt9XHJcblxyXG4gIGV4cG9ydFRvRXhjZWwodGFibGVJZDogc3RyaW5nLCBuYW1lPzogc3RyaW5nLCBkYXRhTGlzdD86IGFueVtdLCBjb2x1bW5zRGF0ZT86IHN0cmluZ1tdKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgdGltZVNwYW4gPSB0aGlzLmRhdGVUaW1lU2VydmljZS5nZXRmb3JtYXREYXRlKG5ldyBEYXRlKCksICd5eXl5TU1kZCcpO1xyXG4gICAgICBsZXQgZmlsZU5hbWUgPSBgJHtuYW1lIHx8ICdFeHBvcnQnfV8ke3RpbWVTcGFufS54bHN4YDtcclxuXHJcbiAgICAgIGlmIChkYXRhTGlzdCAmJiBkYXRhTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgLy8gQ29udmVydGlyIHZhbG9yZXMgYm9vbGVhbm9zIGRlIGxhIGNvbHVtbmEgXCJhY3Rpdm9cIiBhIFwiYWN0aXZvXCIgbyBcImluYWN0aXZvXCJcclxuICAgICAgICBjb25zdCBtb2RpZmllZERhdGFMaXN0ID0gZGF0YUxpc3QubWFwKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgaWYgKGl0ZW0uaGFzT3duUHJvcGVydHkoJ0FjdGl2bycpKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjb2x1bW4nLCBpdGVtKTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwgQWN0aXZvOiBpdGVtLkFjdGl2byA/ICdhY3Rpdm8nIDogJ2luYWN0aXZvJyB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHdvcmtTaGVldCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldChtb2RpZmllZERhdGFMaXN0KTtcclxuXHJcbiAgICAgICAgLy8gQWp1c3RhciBlbCBhbmNobyBkZSBsYXMgY29sdW1uYXNcclxuICAgICAgICBjb25zdCBjb2x1bW5XaWR0aHMgPSBtb2RpZmllZERhdGFMaXN0WzBdID8gT2JqZWN0LmtleXMobW9kaWZpZWREYXRhTGlzdFswXSkubWFwKCgpID0+ICh7IHdweDogMTAwIH0pKSA6IFtdO1xyXG4gICAgICAgIHdvcmtTaGVldFsnIWNvbHMnXSA9IGNvbHVtbldpZHRocztcclxuXHJcbiAgICAgICAgY29uc3Qgd29ya0Jvb2s6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnV0aWxzLmJvb2tfbmV3KCk7XHJcbiAgICAgICAgWExTWC51dGlscy5ib29rX2FwcGVuZF9zaGVldChcclxuICAgICAgICAgIHdvcmtCb29rLFxyXG4gICAgICAgICAgd29ya1NoZWV0LFxyXG4gICAgICAgICAgbmFtZT8uc3Vic3RyaW5nKDAsIDMxKSB8fCAnU2hlZXQxJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgWExTWC53cml0ZUZpbGUod29ya0Jvb2ssIGZpbGVOYW1lKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhgQXJjaGl2byAke2ZpbGVOYW1lfSBnZW5lcmFkbyBleGl0b3NhbWVudGUuYCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBoYXkgZGF0b3MgcGFyYSBleHBvcnRhci4nKTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgYWwgZ2VuZXJhciBlbCBhcmNoaXZvIEV4Y2VsOicsIGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19