Dans ce tutoriel, vous allez apprendre comment importer un fichier Excel dans Laravel.
Ici, pour importer des données de fichier Excel, nous utiliserons le package Maatwebsite.
LIRE AUSSI: Comment générer des fichiers PDF dans Laravel 8
En utilisant ce package, nous pouvons facilement importer des données à partir d’une feuille Excel et les insérer dans un tableau dans l’application Laravel.
Dans certaines des entreprises dans lesquelles un grand nombre de données ont été stockées dans Excel, et après avoir stocké ces données, ils souhaitent une application qui les aide à les stocker dans une base de données d’applications Web, c’est-à-dire à importer dans une base de données d’applications Web.
LIRE AUSSI: Comment créer une pagination dans Laravel 8 avec Bootstrap 4
Ensuite, à ce moment-là, si votre application Web a été créée avec le Framework Laravel, cet article est fait pour vous.
Dans cet article, nous verrons ou apprendrons comment importer n’importe quel type de feuille de calcul Excel au format .xls, .xlsx ou des données CSV dans une base de données Mysql avec Laravel.
Importer un fichier Excel dans Laravel
Pour importer un fichier Excel dans Laravel nous allons suivre les étapes ci-dessous :
LIRE AUSSI: Comment installer Bootstrap 4 dans Laravel
Étape 1 – Créer une table dans MySQL
Tout d’abord, nous devons créer une table dans la base de données Mysql, alors exécutez le script SQL suivant, cela créera une table tbl_customer dans votre base de données.
-- -- Database: `testing` -- -- -------------------------------------------------------- -- -- Table structure for table `tbl_customer` -- CREATE TABLE `tbl_customer` ( `CustomerID` int(11) NOT NULL, `CustomerName` varchar(250) NOT NULL, `Gender` varchar(30) NOT NULL, `Address` text NOT NULL, `City` varchar(250) NOT NULL, `PostalCode` varchar(30) NOT NULL, `Country` varchar(100) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -- Indexes for table `tbl_customer` -- ALTER TABLE `tbl_customer` ADD PRIMARY KEY (`CustomerID`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `tbl_customer` -- ALTER TABLE `tbl_customer` MODIFY `CustomerID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=146;
Étape 2 – Connexion à la base de données Mysql dans Laravel
Après cela, vous devez établir une connexion à la base de données. Pour cela, vous devez d’abord ouvrir le fichier database.php à partir de config.
Et dans ce fichier, vous devez définir votre configuration de base de données.
<?php return [ 'default' => env('DB_CONNECTION', 'mysql'), ........... 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'testing'), 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], ............. ];
Après cela, vous devez ouvrir le fichier .env, et dans ce fichier, vous devez également définir la configuration de la base de données Mysql.
DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=testing DB_USERNAME=root DB_PASSWORD=
Étape 3 – Télécharger le package Maatwebsite
Si vous souhaitez importer un fichier Excel dans Laravel, vous devez d’abord télécharger le package Maatwebsite, ce package va nous permettre de communique avec les données de la feuille de calcul Excel.
Tout d’abord, pour télécharger le package, vous devez accéder à l’invite de commande et écrire la commande suivante.
composer require maatwebsite/excel
Cette commande téléchargera ce package dans votre dossier de travail Laravel.
Après cela, nous devons enregistrer ce package dans notre application Laravel.
Pour cela, nous devons aller dans le fichier config/app.php. Et dans ce fichier, vous devez définir les fournisseurs et les alias.
<?php return [ ........ 'providers' => [ ....... Maatwebsite\Excel\ExcelServiceProvider::class, ], 'aliases' => [ ........ 'Excel' => Maatwebsite\Excel\Facades\Excel::class, ], ];
De cette façon, nous pouvons enregistrer le package Maatwebsite dans l’application Laravel, nous pouvons maintenant utiliser ce package pour importer des données de fichier Excel.
Étape 4 – Créer un contrôleur
Nous devons maintenant créer un contrôleur pour gérer la demande http pour l’importer le fichier Excel. Nous apperlerons ce fichier : ImportExcelController.php
Dans ce contrôleur, nous avons utilisé deux instructions use.
La première est utilisée pour les opérations de base de données mysql, et la deuxième est pour le package Maatwebsite pour l’importation de données de feuille Excel.
Dans ce contrôleur, nous avons deux méthodes.
index() – Cette méthode récupérera les données de la table client et ces données seront chargées dans un tableau dans le fichier import_blade.php.
import() – Cette méthode permettra d’importer le fichier Excel.
Dans cette méthode, il faut d’abord valider le format de fichier Excel.
Si un fichier sélectionné autre qu’une feuille Excel, il renverra une erreur de validation. Mais supposons que le fichier sélectionné soit Excel, il procédera à l’importation des données.
Pour importer des données ici, on a appelé la classe Excel du package qui contiendra les données du fichier Excel et les convertir en tableau PHP, puis les insérer dans la table client.
Après l’importation réussie des données, il renverra un message de réussite.
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use DB; use Excel; class ImportExcelController extends Controller { function index() { $data = DB::table('tbl_customer')->orderBy('CustomerID', 'DESC')->get(); return view('import_excel', compact('data')); } function import(Request $request) { $this->validate($request, [ 'select_file' => 'required|mimes:xls,xlsx' ]); $path = $request->file('select_file')->getRealPath(); $data = Excel::load($path)->get(); if($data->count() > 0) { foreach($data->toArray() as $key => $value) { foreach($value as $row) { $insert_data[] = array( 'CustomerName' => $row['customer_name'], 'Gender' => $row['gender'], 'Address' => $row['address'], 'City' => $row['city'], 'PostalCode' => $row['postal_code'], 'Country' => $row['country'] ); } } if(!empty($insert_data)) { DB::table('tbl_customer')->insert($insert_data); } } return back()->with('success', 'Excel Data Imported successfully.'); } }
Étape 5 – Créer un fichier vue
Ce fichier a été chargé par la méthode index () d’ImportExcelController. Dans ce fichier, nous avons créé un formulaire pour sélectionner un fichier Excel à partir d’un ordinateur local pour importer des données.
Sous le formulaire, il affichera les données de la table tbl_customer. Et au-dessus du formulaire, nous avons défini un message d’erreur de validation d’affichage et un message de réussite.
<!DOCTYPE html> <html> <head> <title>Import Excel File in Laravel</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" /> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body> <br /> <div class="container"> <h3 align="center">Import Excel File in Laravel</h3> <br /> @if(count($errors) > 0) <div class="alert alert-danger"> Upload Validation Error<br><br> <ul> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif @if($message = Session::get('success')) <div class="alert alert-success alert-block"> <button type="button" class="close" data-dismiss="alert">×</button> <strong>{{ $message }}</strong> </div> @endif <form method="post" enctype="multipart/form-data" action="{{ url('/import_excel/import') }}"> {{ csrf_field() }} <div class="form-group"> <table class="table"> <tr> <td width="40%" align="right"><label>Select File for Upload</label></td> <td width="30"> <input type="file" name="select_file" /> </td> <td width="30%" align="left"> <input type="submit" name="upload" class="btn btn-primary" value="Upload"> </td> </tr> <tr> <td width="40%" align="right"></td> <td width="30"><span class="text-muted">.xls, .xslx</span></td> <td width="30%" align="left"></td> </tr> </table> </div> </form> <br /> <div class="panel panel-default"> <div class="panel-heading"> <h3 class="panel-title">Customer Data</h3> </div> <div class="panel-body"> <div class="table-responsive"> <table class="table table-bordered table-striped"> <tr> <th>Customer Name</th> <th>Gender</th> <th>Address</th> <th>City</th> <th>Postal Code</th> <th>Country</th> </tr> @foreach($data as $row) <tr> <td>{{ $row->CustomerName }}</td> <td>{{ $row->Gender }}</td> <td>{{ $row->Address }}</td> <td>{{ $row->City }}</td> <td>{{ $row->PostalCode }}</td> <td>{{ $row->Country }}</td> </tr> @endforeach </table> </div> </div> </div> </div> </body> </html>
Étape 6 – Définir une route
Après cela, nous devons définir la route de la méthode du contrôleur.
Pour cela, nous devons ouvrir le fichier routes/web.php. Dans ce fichier, nous pouvons définir route.
<?php ....... Route::get('/import_excel', 'ImportExcelController@index'); Route::post('/import_excel/import', 'ImportExcelController@import');
Étape 7 – Exécutez l’application Laravel
Enfin, nous devons exécuter l’application Laravel, pour cela, nous devons aller dans l’invite de commande et écrire la commande suivante.
php artisan serve
Cette commande sera l’application Laravel, elle renverra l’URL de base de l’application Laravel. Maintenant, pour cette application, nous devons écrire l’URL suivante dans le navigateur.
http://127.0.0.1:8000/import_excel
Conclusion
Dans ce tutoriel, nous avons appris, comment faire pour importer un fichier Excel dans Laravel à l’aide du package Maatwebsite.
2 Comments