Selaa lähdekoodia

Export Excel for the module Conusltar Registro

FREDY 1 kuukausi sitten
vanhempi
commit
c10742372c

+ 2 - 5
Front/src/app/modules/Administrador/pages/consultarRegistroAcayAdmi/consultar-registro-acay-admi.component.html

@@ -13,12 +13,9 @@
           </mat-form-field>
         </div>
         <div class="exportar">
-          <button mat-button type="button" class="boton-export" [matMenuTriggerFor]="menu">Exportar a Excel<mat-icon
+          <button mat-button type="button" class="boton-export" (click)="exportarTodo()">Exportar a Excel<mat-icon
               svgIcon="excel" class="icono-blanco"></mat-icon></button>
-          <mat-menu #menu="matMenu">
-            <button mat-menu-item (click)="exportAsExcel()">Exportar esta Página</button>
-            <button mat-menu-item (click)="exportAll()">Exportar Todo</button>
-          </mat-menu>
+
         </div>
       </div>
 

+ 20 - 13
Front/src/app/modules/Administrador/pages/consultarRegistroAcayAdmi/consultar-registro-acay-admi.component.ts

@@ -1,3 +1,4 @@
+import { ExportExcellService } from './../../services/export-excell.service';
 import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';
 import { MatIconRegistry } from '@angular/material/icon';
 import { MatPaginator } from '@angular/material/paginator';
@@ -12,6 +13,7 @@ import { consultarRegistroService } from '../../services/consultarRegistro.servi
 import { registroAlumnoComponent } from '../../../Padres/pages/registroAlumno/registroAlumno.component';
 import { PersonalizarService } from '../../services/personalizar.service';
 
+
 @Component({
   selector: 'app-consultar-registro-acay-admi',
   templateUrl: './consultar-registro-acay-admi.component.html',
@@ -39,26 +41,31 @@ url2: string | null = '';
     private _enviarInfo: EnviarInfoService,
     private _consultarRegistro: consultarRegistroService,
     private personalizarService : PersonalizarService,
+        private exportExcell : ExportExcellService,
     private _registroService: RegistroAcademicoService,
     private _registroAlumno: registroAlumnoComponent) {
     this._MatIconRegister.addSvgIcon('excel', this._DomSanitizer.bypassSecurityTrustResourceUrl('assets/icons/excel.svg'));
 
   }
-  exportAsExcel() {
-    const ws: XLSX.WorkSheet = XLSX.utils.table_to_sheet(this.table.nativeElement);
-    const wb: XLSX.WorkBook = XLSX.utils.book_new();
-    XLSX.utils.book_append_sheet(wb, ws, 'COLEGIOABC-ConsultaRegistroAcademico/Administrativo');
-    XLSX.writeFile(wb, 'RegistroAcademico/Administrativo.xlsx');
-  }
+
   //exportar toda la data a excel
-  exportAll() {
-    const dataSource = this.dataSource.data;
-    const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(dataSource);
-    const wb: XLSX.WorkBook = XLSX.utils.book_new();
 
-    XLSX.utils.book_append_sheet(wb, ws, 'COLEGIOABC-ConsultaRegistroAcademico/Administrativo');
-    XLSX.writeFile(wb, 'RegistroAcademico/Administrativo.xlsx');
-  }
+exportarTodo() {
+  this.exportExcell.getConsultarRegistro().subscribe((response: any) => {
+    const datos = response.data.map((item: any) => ({
+      'ID Usuario': item.idUsuario,
+      'Nombre Completo': item.nombreCompleto,
+      'Quién Registró': item.quienRegistra,
+      'Última Actualización': item.ultActualizacion,
+      'Académico Completo': item.registroAcCompleto,
+      'Administrativo Completo': item.registroAdCompleto
+    }));
+
+    // Aquí sí usas tu servicio ExportExcell
+    this.exportExcell.exportJsonToExcel(datos, 'AlumnosRegistro');
+  });
+}
+
 
  applyFilter(event: Event) {
     const filterValue = (event.target as HTMLInputElement).value;

+ 21 - 0
Front/src/app/modules/Administrador/services/export-excell.service.ts

@@ -2,6 +2,8 @@ import { Injectable } from '@angular/core';
 import { environments } from "../../../../environments/environments";
 import { HttpClient, HttpHeaders } from '@angular/common/http';
 import Swal from 'sweetalert2';
+import * as XLSX from 'xlsx';
+
 
 @Injectable({
   providedIn: 'root'
@@ -79,6 +81,25 @@ exportAll(tabla: string) {
       Swal.fire('Error', 'Error desconocido en la descarga', 'error');
     }
   }
+
+  exportJsonToExcel(datos: any[], nombreArchivo: string) {
+  // Convertir JSON a hoja Excel
+  const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(datos);
+
+  // Crear libro
+  const workbook: XLSX.WorkBook = XLSX.utils.book_new();
+
+  // Nombre seguro de la hoja
+  let sheetName = nombreArchivo.substring(0, 31);
+  XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);
+
+  // Descargar archivo
+  XLSX.writeFile(workbook, `${nombreArchivo}.xlsx`);
+}
+
+    getConsultarRegistro(){
+       return  this.http.get(`${this.URL}/alumnosRegistro`, { headers: this.getHeaders() });
+    }
 }
 
 

+ 2 - 6
Front/src/app/modules/Padres/pages/registroAlumno/registroAlumno.component.ts

@@ -126,14 +126,13 @@ url2: string | null = '';
   }
 getAll() {
   this._registroService.getAll().subscribe((response: any) => {
-    // Creamos un array de estados para cada alumno
+    // Solo generamos statusAlumnos, no tocamos la tabla
     this.statusAlumnos = response.registro.map((student: any) => {
       const tieneAlguno =
         (student.FiDI_PadNombre2 && student.FiDI_PadNombre2.trim() !== '') ||
         (student.FiDI_Nombre2 && student.FiDI_Nombre2.trim() !== '') ||
         (student.FiDI_MadNombre2 && student.FiDI_MadNombre2.trim() !== '');
 
-      // Definimos el estado según completado
       let estado = 'Empezar Registro';
       if (student.completado === 1) {
         estado = 'Completa';
@@ -145,12 +144,9 @@ getAll() {
         idAlumno: student.idAlumno,
         error: !tieneAlguno,
         completado: student.completado,
-        estado // Guardamos directamente el estado
+        estado
       };
     });
-
-    // Actualizamos la dataSource de la tabla si quieres usarla
-    this.dataSource.data = response.registro;
   });
 }