Tutoriel Laravel 8 Importer et Exporter un fichier Excel et CSV - Letecode

Tutoriel Laravel 8 Importer et Exporter un fichier Excel et CSV

Cet article fournira un exemple de laravel 8, importer et exporter excel. vous apprendrez comment importer et exporter un fichier CSV depuis la base de données

Jean Claude Mbiya
Jean Claude Mise à jour : 20 décembre 2022 2868

Dans cet exemple, j'ai écrit un script complet expliquant comment importer un fichier csv dans la base de données en utilisant laravel 8 et comment exporter un fichier csv à partir de la base de données dans laravel 8. vous pouvez facilement télécharger un fichier excel et csv à partir de la base de données dans laravel 8.

Dans cet exemple, nous utiliserons le package composer  maatwebsite/excel pour les tâches d'importation et d'exportation. maatwebsite/excel fournit un moyen facile d'importer et d'exporter à l'aide d'un modèle de base de données. maatwebsite/excel a mis à jour la version 3 et ils offrent un excellent moyen d'importer des données et d'exportation à partir de la base de données, alors suivez ses quelques étapes pour obtenir un exemple.

Étape 1 : Installez Laravel 8

Ici, nous devons installer l'application Laravel 8 à l'aide de la commande ci-dessous. Ouvrez donc votre terminal OU l'invite de commande et exécutez la commande ci-dessous :

composer create-project --prefer-dist laravel/laravel Fileblog

Étape 2 : Installez le package maatwebsite/excel

Dans cette étape, nous devons installer le package maatwebsite/excel via le gestionnaire de packages Composer, donc tapez cette commande sur votre terminal :

composer require maatwebsite/excel

Ouvrez maintenant le fichier config/app.php et ajoutez le fournisseur de services et l'alias.

config/app.php

'providers' => [
....
Maatwebsite\Excel\ExcelServiceProvider::class,
],
'alias' => [
....
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
],

 

Étape 3 : Créer des enregistrements factices

Dans cette étape, nous devons exiger une table "users" avec des enregistrements factices, afin que nous puissions simplement importer et exporter. Vous devez donc d'abord exécuter la migration par défaut fournie par laravel à l'aide de la commande suivante :

php artisan migrate

Après cela, nous devons exécuter la commande suivante pour générer des utilisateurs factices :

php artisan tinker
User::factory()->count(20)->create()

 

Étape 4 : ajouter des routes

Dans cette étape, nous devons créer les route du fichier d'import-export. alors ouvrez votre fichier "routes/web.php" et ajoutez les routes suivantes.

 

routes/web.php

<?php 
use Illuminate\Support\Facades\Route;    
use App\Http\Controllers\MyController;



/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
  
Route::get('importation-fichiers', [FileController::class, 'importExportView']);
Route::get('export', [FileController::class, 'export'])->name('export');
Route::post('import', [MyController::class, 'import'])->name('import');

 

Étape 5 : Créer une classe d'importation

Dans maatwebsite 3, la version fournit un moyen de construire une classe d'importation et nous devons l'utiliser dans le contrôleur. Ce serait donc un excellent moyen de créer une nouvelle classe d'importation. Vous devez donc exécuter la commande suivante et modifier le code suivant sur ce fichier :

php artisan make:import UsersImport --model=User

app/Imports/UsersImport.php

<?php
namespace App\Imports;
use App\Models\User;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
  
class UsersImport implements ToModel, WithHeadingRow
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {
        return new User([
            'name'     => $row['name'],
            'email'    => $row['email'], 
            'password' => \Hash::make($row['password']),
        ]);
    }
}

 

Vous pouvez télécharger le fichier csv de démonstration à partir d'ici : Fichier CSV de démonstration .

 

Étape 6 : Créer une classe d'exportation

La version maatwebsite 3 fournit un moyen de construire une classe d'exportation et nous devons l'utiliser dans le contrôleur. Ce serait donc un excellent moyen de créer une nouvelle classe d'exportation. Vous devez donc exécuter la commande suivante et modifier le code suivant sur ce fichier :

 

php artisan make:export UsersExport --model=User

 

app/Exports/UsersExport.php

<?php
  
namespace App\Exports;
  
use App\Models\User;
use Maatwebsite\Excel\Concerns\FromCollection;
  
class UsersExport implements FromCollection
{
    /**
    * @return \Illuminate\Support\Collection
    */
    public function collection()
    {
        return User::all();
    }
}

 

Étape 7 : Créer un contrôleur

Dans cette étape, nous devons maintenant créer un nouveau contrôleur en tant que FileController dans ce chemin "app/Http/Controllers/FileController.php". ce contrôleur gérera tous les importExportView, les demandes d'exportation et d'importation et les réponses de retour, alors placez le contenu ci-dessous dans le fichier du contrôleur :

 

app/Http/Controllers/FileController.php

<?php
     
namespace App\Http\Controllers;
    
use Illuminate\Http\Request;
use App\Exports\UsersExport;
use App\Imports\UsersImport;
use Maatwebsite\Excel\Facades\Excel;
    
class FileController extends Controller
{
    /**
    * @return \Illuminate\Support\Collection
    */
    public function importExportView()
    {
       return view('import');
    }
     
    /**
    * @return \Illuminate\Support\Collection
    */
    public function export() 
    {
        return Excel::download(new UsersExport, 'users.xlsx');
    }
     
    /**
    * @return \Illuminate\Support\Collection
    */
    public function import() 
    {
        Excel::import(new UsersImport,request()->file('file'));
             
        return back();
    }
}

 

Étape 8 : Créer un fichier Blade

Dans la dernière étape, créons import.blade.php(resources/views/import.blade.php) pour la mise en page et nous écrirons le code de conception ici et mettrons le code suivant :

 

resources/views/import.blade.php

 

<!DOCTYPE html>
<html>
<head>
  <title>Laravel 8 Importer et Exporter Excel dans la base de données Example - letecode.com</title>
    <link rel="stylesheet" href="<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous"> " />
</head>
<body>
<div class="container">
    <div class="card bg-light mt-3">
        <div class="card-header">
          Laravel 8 Importer et Exporter Excel dans la base de données Example - letecode.com
        </div>
        <div class="card-body">
            <form action="{{ route('import') }}" method="POST" enctype="multipart/form-data">
                @csrf
                <input type="file" name="file" class="form-control">
                <br>
                <button class="btn btn-success">Import User Data</button>
                <a class="btn btn-warning" href="{{ route('export') }}">Export User Data</a>
            </form>
        </div>
    </div>
</div>
</body>
</html>

Vous pouvez maintenant vérifier votre application laravel 8.

Nous sommes maintenant prêts à exécuter notre exemple, alors exécutez la commande ci-dessous pour exécuter rapidement :

php artisan serve

Vous pouvez maintenant ouvrir l'URL ci-dessous sur votre navigateur :

http://localhost:8000/importation-fichiers

 

2
Jean Claude Mbiya
Jean Claude Mbiya

Développeur Web full stack, Développeur Android (Certifié Google AAD) Formateur dans les domaines du numérique, Créateur letecode.com 👨‍💻. Je suis un grand passionné des nouvelles technologies et j'adore partager ce que j'apprend.

0 commentaire(s)

Laissez votre commentaire à @johnmbiya

ou pour laisser un commentaire