Archivo de Excel creado con Laravel, PHP y PhpSpreadsheet

Laravel: crear archivo de Excel

En este post veremos cómo crear un archivo de Excel usando Laravel. Verás que es realmente sencillo.

Te pondré un ejemplo simple y a partir del mismo podrás crear hojas de cálculo usando los modelos de Laravel que se conectan a la base de datos o trayendo el contenido desde cualquier lugar.

Vamos a usar PhpSpreadsheet del cual ya existe un post con PHP puro, pero ahora veremos cómo usar PhpSpreadsheet con Laravel.

Instalando PhpSpreadsheet en Laravel

Laravel utiliza composer como gestor de dependencias, así que no importa si tienes un proyecto nuevo o existente, la dependencia se instala con:

composer require phpoffice/phpspreadsheet

Quiero mencionar que a mí me arrojó un error, si en tu caso la instalación fue correcta desde el inicio entonces pasa al siguiente apartado.

A mí me apareció lo que aparece abajo, documentado ya en el siguiente enlace: https://github.com/PHPOffice/PhpSpreadsheet/issues/2790:

Problem 1
– phpoffice/phpspreadsheet[1.24.0, …, 1.24.1] require psr/simple-cache ^1.0 || ^2.0 -> found psr/simple-cache[1.0.0, 1.0.1, 2.0.0, 2.x-dev] but the package is fixed to 3.0.0 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
– Root composer.json requires phpoffice/phpspreadsheet ^1.24 -> satisfiable by phpoffice/phpspreadsheet[1.24.0, 1.24.1].

Use the option –with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.

Installation failed, reverting ./composer.json and ./composer.lock to their original content.

Entonces hice un:

composer require phpoffice/phpspreadsheet --with-all-dependencies

Y con eso funcionó. Obviamente si a ti te sale otro error hay que buscar la solución en Google y listo.

Ejemplo de Excel con Laravel

Voy a mostrarte algo sencillo, pues lo “complejo” es usar la librería desde Laravel, una vez que tengas una muestra entonces podrás hacer varias cosas partiendo desde lo más simple.

Comenzamos “importando” las clases:

En este caso solo voy a guardar un arreglo dentro de un archivo de Excel que se descargará automáticamente al visitar una ruta de Laravel.

Más adelante puedes mover el código a un controlador o cosas similares:

Primero creamos el documento con sus propiedades, luego obtenemos la referencia a la hoja y colocamos el encabezado usando fromArray.

Lo hago de esta forma para mostrarte que se puede usar fromArray o con setCellValueByColumnAndRow como se indica en el ciclo que escribe los productos.

Obviamente hay más métodos y cosas que puedes hacer en las celdas y hojas del libro de Excel creado con Laravel, y también puedes guardarlo en el almacenamiento o incluso enviarlo por correo.

Yo lo estoy mandando en el navegador para que se descargue al usuario. Y al abrirlo (visitando /excel en el navegador) se ve lo siguiente:

Archivo de Excel creado con Laravel, PHP y PhpSpreadsheet
Archivo de Excel creado con Laravel, PHP y PhpSpreadsheet

Conclusión

El archivo web.php quedó así completamente:

Y si quieres ver otro ejemplo más complejo con consultas, condicionales y cosas de esas aquí lo dejo:

Como te dije, aquí lo que te quería mostrar es cómo unir PhpSpreadsheet y Laravel, ya que en mi blog tengo otros tutoriales de, por ejemplo, cómo exportar una base de datos a Excel, leer una hoja de cálculo o guardarla en el disco duro.

Por aquí te dejo más tutoriales de Laravel y PHP en mi blog.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario