Posted in

Instalación y uso de Maatwebsite v3 en Laravel 6

Para instalar Maatwebsite

composer require maatwebsite/excel

Añadimos el provider y el alias en el archivo app.php

'providers' => [

	....

	Maatwebsite\Excel\ExcelServiceProvider::class,

],

'aliases' => [

	....

	'Excel' => Maatwebsite\Excel\Facades\Excel::class,

],

La versión maatwebsite 3 proporciona una forma de construir una clase de exportación que usaremos en el controlador. Es una excelente manera de crear una nueva clase de exportación. La ejecución de la siguiente linea, creará una clas en App\Imports llamada FormatsImport

php artisan make:import FormatsImport

Y en esta clase podemos ejecutar una acción con la importación de un Excel, quedaría de la siguiente forma el archivo FormatsImport:

namespace App\Imports;

use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;

class FormatsImport implements ToCollection
{
    /**
    * @param Collection $collection
    */
    public function collection(Collection $collection)
    {
        foreach ($collection as $row)
        {
            print_r($row);
        }
    }
}

Y la llamada a esta clase desde el controlador

\Excel::import(new \App\Imports\FormatsImport, $path . '/' . $excel);

Pasando un parámetro

Y si queremos pasar un parámetro a la clase de exportación, lo haremos de la siguiente forma, en la clase import:

namespace App\Imports;

use App\Format;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;

class FormatsImport implements ToCollection
{
    private $campaign_id;


    public function __construct(int $campaign_id)
    {
        $this->campaign_id = $campaign_id;
    }

    public function collection(Collection $collection)
    {}
}

En el controlador:

$export = new \App\Imports\FormatsImport($campaign->id);

        \Excel::import($export, $path . '/' . $excel);

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *


The reCAPTCHA verification period has expired. Please reload the page.