He actualizado este artículo y ejemplo, para adecuarlo a las últimas versiones de la biblioteca de PHP phpSpreadsheet. Esta versión requiere PHP 8.X y he añadido la extensión de «dompdf/dompdf», para poder crear PDF’s y la biblioteca «mitoteam/jpgraph», para los gráficos en PDF.
He hecho prueba de pasar los informes del ejemplo a PDF y el resultado, desde mi punto de vista, sigue siendo muy malo.
También, he generalizado el acceso a los datos para que no sea dependiente de MySQL. Ahora serviría para cualquier base de datos.
El informe de Municipios con ruptura y cabecera por Provincia lo he realizado siguiendo el método propuesto de insertar líneas para «arrastrar» los estilos de las filas, el que he llamado «lento» y el llamado «rápido» he utilizado el método de copiado de estilos, sin hacer inserciones de líneas.
Cuando inserta líneas, además de copiar los estilos revisa toda la hoja para recalcular las fórmulas y de ahí la tardanza que tiene una progresión exponencial del tiempo requerido según se va aumentando el número de registros.
Para 8.122 registros, la mejora es de al menos de 10 a 1.
DEMO: https://fhumanes.com/reports/
Si te interesa este tema, sigue leyendo el artículo de este enlace.