AnyChart – ¡Ganador del Premio DEVIES 2024! Nombrada mejor tecnología en la categoría de análisis y visualización de datos.
Crear informes con phpSpreadsheet, Actualización
He actualizado el artículo, a petición de Rubén, para que se disponga de un tipo de informe con formato ficha (una hoja de información por cada artículo).
El nuevo informe está en la opción de Provincia, en un botón naranja y que produce una salida con este tipo de formato:
Espero que os sea útil.
Si deseas ver todo el artículo, haz clic en este enlace.
Call to undefined function curl_init(), al cambiar versión de PHP
Al menos en mi caso, cuando cambie a la versión de PHP 8.2.13, vi que no se cargaba la librería de CURL y que los ejemplos que la utiliza me daba este mensaje «Call to undefined function curl_init()«.
Si revisáis este error, te indica que hay que poner unas DLL’s en el directorio de «bin» de Apache, pero no indica de dónde sacar esos ficheros. Además, en unos mensajes poner unos ficheros y en otros, pone otros.
Al final me he dado cuenta que esa versión de PHP y otras mayos, requieren una actualización del software de Apache. Resumiendo, hay que actualizar tu versión de Apache.
Ahora estoy ejecutando Apache 2.4.58 y PHP 8.2.15
Tenedlo en cuenta si tienes este mismo error.
Crear informes con phpSpreadsheet (actualización)
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.
Integrar con Drupal
Drupal es un CMS (Gestor de contenidos) de los más utilizado, sobre todo en empresas de la Administración Pública y sitios oficiales, porque en teoría tiene menos agujeros de seguridad que el resto (WordPress, Joomla, etc.).
En concreto, se utiliza masivamente en la organización donde yo trabajaba y en la empresa donde trabaja mi hijo.
En la versión 10, que es la que he utilizado en este ejemplo, es un producto que ha madurado mucho. La mejora de estos últimos años ha sido «enorme».
Desde mi punto de vista, es un excelente producto para mostrar contenido (biblioteca de libros, imágenes, actividades de colegios o club deportivo, etc.), con mejor calidad que los desarrollos de PHPRunner y, además, es gratuito.
Si necesitáis un manual de usuario para la instalación y gestión de Drupal 10, podéis ir a esta empresa https://www.forcontu.com/user/downloads, disponen de muy buenos manuales (español e Inglés) y el básico «Site Building Introducción» os lo facilitan por registraros ( PDF 433 páginas) .
Objetivo
Esta nueva versión de Drupal incorpora un API REST Full para acceder y modificar todo su contenido y el «reto» es utilizando este API, mover contenidos (datos y ficheros) desde Drupal a PHPRunner y desde PHPRunner a Drupal.
(1).- Botón para traer todos los Artículos de Drupal a PHPRunner.
(2).- Botón para cargar los registros seleccionados de PHPRunner a Drupal.
(3) y (4).- Tanto de la información se ha traído de Drupal, como si se ha cargado desde PHPRunner, estos datos identifican la información en Drupal, para que si sincronizamos la información, el aplicativo elimina la versión anterior.
Si estas interesado en este tema, sigue leyendo el artículo en este enlace.