Laravel

Tamaño automático de celdas al exportar con Laravel-Excel

Aprenderemos a programar las celdas para que tengan un ancho automático o ancho personalizado.

Tamaño automático de celdas al exportar con Laravel-Excel. Por defecto el paquete de exportación Laravel-Excel a la hora de exportar las celdas se exportan d emanera ajustada. Por lo tanto, aprenderemos a configurar de manera personalizada el ancho de las celdas en ficheros excel en la exportacion.

¿Como exportar ficheros excel con celdas de tamaño automatico con Laravel-Excel?

Para autoajustar el tamaño de las celdas al exportar un archivo de Excel con Laravel-Excel, puedes usar la clase WithColumnAutoSize en tu fichero de exportación.

Vamos a explicar los 4 pasos que debemos de seguir y también pueden ver la documentación oficial.

  1. Primer paso: Instalar Laravel Excel (si no lo has hecho):
    composer require maatwebsite/excel
  2. Segundo paso: Crea una clase de exportación:

    php artisan make:export UsersExport --model=User

     

  3. Tercer paso: Edita la clase de exportación (UsersExport.php): Agrega la interfaz WithColumnWidths o WithColumnAutoSize según lo que necesites.
    namespace App\Exports;
    use App\Models\User;
    use Maatwebsite\Excel\Concerns\FromCollection;
    use Maatwebsite\Excel\Concerns\WithHeadings;
    use Maatwebsite\Excel\Concerns\ShouldAutoSize;
    class UsersExport implements FromCollection, WithHeadings, ShouldAutoSize
    {
        public function collection()
        {
            return User::all();
        }
    
    
        public function headings(): array
        {
            return ["ID", "Nombre", "Correo", "Fecha de Creación"];
        }
    }
  4. Cuarto paso: Descargar el archivo en el controlador:
    use App\Exports\UsersExport;
    use Maatwebsite\Excel\Facades\Excel;
    
    
    class UserController extends Controller
    {
        public function export()
        {
            return Excel::download(new UsersExport, 'usuarios.xlsx');
        }
    }

Explicación de los 4 pasos de auto Size celdas en laravel Excel:

  • ShouldAutoSize: Autoajusta automáticamente el tamaño de las columnas.
  • WithHeadings: Agrega encabezados personalizados.
  • FromCollection: Exporta los datos desde un modelo Eloquent.

Si necesitas personalizar mas a fondo el ancho de cada columnas  y tener más control sobre el tamaño de cada columna, puedes usar WithColumnWidths en lugar de ShouldAutoSize:

¿Como personalizar el ancho de cada columna con Laravel-Excel?

A continuación, veremos ejemplos de como tener el máximo control sobre las celdas en exportación de excel.

use Maatwebsite\Excel\Concerns\WithColumnWidths;

class UsersExport implements FromCollection, WithHeadings, WithColumnWidths
{
    public function columnWidths(): array
    {
        return [
            'A' => 10,
            'B' => 20,
            'C' => 30,
            'D' => 25,
        ];
    }
}

Otro ejemplo de interacciona seria lo siguiente

namespace App\Exports;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;

class InvoicesExport implements ShouldAutoSize
{
    ...
}

Con esto esperamos que ayude a personar el ancho de cada columna o dejarlo el ancho de manera automática con ShouldAutoSize.

Auto Size de celdas en exportar ficheros excel en laravel
Auto Size de celdas en exportar ficheros excel en laravel

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad