La generación de reportes Excel en Laravel es una necesidad básica que una aplicación web debe contar para poder exportar la información a fuentes externas de manera estructurada. En esta clase exploraremos cómo integrar de manera eficiente la funcionalidad de generar archivos Excel en nuestra aplicación Laravel. ¡Hola y bienvenidos de nuevo al curso de Laravel intermedio!
¡Empecemos!
Generación de reportes en excel
Excel es una aplicación para la generación de reportes desarrollada por Microsoft. Excel permite a los usuarios realizar tareas como el cálculo, la gestión y el análisis de datos mediante fórmulas, funciones, gráficos y tablas. Se utiliza bastante en entornos empresariales, académicos y personales para organizar y analizar datos de manera eficiente.
Generación de reportes en excel
Excel es una aplicación para la generación de reportes desarrollada por Microsoft. Excel permite a los usuarios realizar tareas como el cálculo, la gestión y el análisis de datos mediante fórmulas, funciones, gráficos y tablas. Se utiliza bastante en entornos empresariales, académicos y personales para organizar y analizar datos de manera eficiente.
¿Qué es Laravel Excel?
Laravel Excel (maatwebsite/excel) es un paquete de Laravel que proporciona funcionalidades para generar de manera fácil y eficiente archivos Excel. Laravel Excel te permite importar/exportar archivos Excel con estilos personalizados y formatos específicos.
Instalar el paquete Laravel Excel (maatwebsite/excel)
Con Composer realizamos la instalación del paquete Laravel Excel. Lo primero, es abrir la Terminal en Linux o Mac, CMD en Windows, nos dirigimos al directorio raíz de nuestro proyecto, escribimos la siguiente línea de código:
composer require maatwebsite/excel:^3.1
Configuración del el paquete Laravel Excel
Una vez instalado el paquete Laravel Excel, seguidamente realizamos la configuración necesaria antes de empezar a utilizar el paquete. En el archivo «config/app.php», añadimos el proveedor de servicios (service provider) correspondiente para integrar el paquete.
Maatwebsite\Excel\ExcelServiceProvider::class,
Seguidamente añadimos el alias del paquete.
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
Por último, publicamos la configuración realizada del paquete Laravel Excel, ejecutando la siguiente línea de código:
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config
Generación de reportes con laravel Excel
Ahora, procederemos a meter el código necesario para la generación de reportes en formato Excel, siguiendo un enfoque similar al que empleamos en la clase anterior para los informes en formato PDF. Primeramente vamos a crear una clase de exportación “AlumnoExcel” en el directorio “repository/exports” donde vamos a definir el vista (FromView) que hace referencia a la colección de datos, que en nuestro caso será una vista Blade que será creada más adelante.
<?php
namespace App\Repositories\Exports; use Illuminate\Contracts\View\View; use Maatwebsite\Excel\Concerns\FromView; class AlumnoExcel implements FromView { public function __construct($data){ $this->data = $data; } public function view(): View { return view('alumnos.excel', [ 'data' => $this->data ]); } }
En el controlador “AlumnoController” realizamos la referenciar a la clase “Excel” y “AlumnoExcel”.
use Maatwebsite\Excel\Facades\Excel; use App\Repositories\Exports\AlumnoExcel;
Ahora, crearemos un método llamado ‘reportExcel’ donde haremos uso del paquete Laravel Excel. En primer lugar, obtendremos el listado de alumnos que están inscritos en al menos un curso y luego regresaremos a la vista para generar el archivo Excel (Aquí haremos uso de las funciones proporcionadas por Laravel Excel para generar el archivo Excel).
public function reportExcel() { $data = [ 'alumnos' => $this->alumnos->obtenerLosAlumnosIncritosAUnCurso(), ]; return Excel::download(new AlumnoExcel($data), 'alumnos.xlsx'); }
Crear las rutas para reporte Excel
Continuando, ahora vamos a definir la ruta para el método “get” correspondientes a las funcionalidad de impresión de reportes Excel en Laravel, en archivo web.php emplearemos la función “Get” de HTTP.
Route::get('/alumnos/reporte/excel', [AlumnoController::class, 'reportExcel'])->name('alumnos.reportExcel');
Generar el reporte Excel en Laravel
Por último, lo que haremos es crear la vista para generar el reporte Excel en Laravel. En una primera instancia, implementaremos la navegabilidad en la vista del “Reporte de Alumnos”.
En el archivo report.blade.php de la funcionalidad “Alumno” añadimos el siguiente código:
<a class="new-button" target="_blank" href="{{ route('alumnos.reportExcel') }}">Reporte Alumno Excel</a>
Seguidamente, en la ruta “resources/views/alumnos” creamos el archivo excel.blade.php. En este archivo, definiremos la vista de impresión utilizando código HTML con los datos enviados desde el controlador ‘AlumnoController’.
<html lang="en"> <body> <table> <tr> <th>Alumno</th> <th>Edad</th> <th>Materias</th> </tr> @foreach ($data['alumnos'] as $alumno) <tr> <td>{{ $alumno->nombre_apellido }}</td> <td>{{ $alumno->edad }}</td> <td> @foreach($alumno->cursos as $curso) {{ $curso->materia }}<br> @endforeach </td> </tr> @endforeach </table> </body> </html>
La generación de archivos Excel en Laravel, potencia significativamente la capacidad de exportar, compartir y analizar datos de manera efectiva en aplicaciones web. El paquete “maatwebsite/exce” nos facilita bastante en la implementación de esta funcionalidad en nuestra aplicación.
Con esto ya concluimos nuestra aplicación de “cursos-online”, aún se puede optimizar y mejorar bastante el código, pero esta base te proporcionará un sólido punto de partida para tus futuros proyectos en Laravel. En la próxima clase, procederemos a desplegar nuestra aplicación en un servidor compartido en la nube.
Recuerda que puedes descargar el código fuente de esta clase y todas las demás clases en el repositorio de GitHub totalmente gratis.
¡Te espero en la siguiente clase!
Saludos y éxitos.

Victor Peña
Desarrollador de software Backend Developer, experto en Laravel Framework, PHP, JavaScript y MySQL. Creador de contenidos de emprendimiento y desarrollo de software.
Pingback: Reportes PDF en Laravel DOMPDF - Norvic Software