Crear informes con phpSpreadsheet (actualización 24/07/2024)

En esta actualización se ha intentado mejorar la seguridad y la información que se facilita al usuario para indicar que el informe se está elaborando.

En concreto, se ha puesto un gráfico de progreso para indicar que el informe se está elaborando o se está descargando.

El botón de 3 estado queda codificado:

  • Client (before):
Swal.fire({
    // icon: 'info',
   title: 'El Informe se ha inciado y se está ejecutando',
   text: '',
   imageUrl: "MyCode/images/calculated.gif",
   imageHeight: 200,
   imageAlt: "Estamos trabajando",
   timer: 60000,
   timerProgressBar: true,
   toast: true,
   showConfirmButton: false,
   position:  'center', // "top-start",
   footer: ''
  })
  • Server:
$_SESSION['report_fase'] = 1;
$_SESSION['report_file'] = '';

include "MyCode/Report001/report.php";

$_SESSION['report_fase'] = 2;
$result['report_file'] = $_SESSION['report_file']
  • Cient (after):
window.open("MyCode/Report001/report.php","_blank" ); 

Swal.fire({
    // icon: 'info',
   title: 'El Informe se ha descargado',
   text: '',
   imageUrl: "MyCode/images/download.gif",
   imageHeight: 200,
    imageAlt: "Estamos trabajando",
   timer: 4000,
   timerProgressBar: true,
   toast: true,
   showConfirmButton: false,
   position:  'center', // "top-start",
   footer: ''
  })

 

Con este sistema el proceso de elaboración del informe se fracciona en 2 fases (la obtención y la descarga). A nivel de seguridad, no se puede ejecutar el informe aunque se conozca la URL del mismo y al usuario se le facilita el gráfico indicando que se está elaborando el informe.

DEMO: https://fhumanes.com/reports/

Si te interesa este tema o deseas disponer del ejemplo, sigue este enlace.