Laravel 8 Import Export Excel & CSV File Tutorial

10-Apr-2023

.

Admin

Laravel 8 Import Export Excel & CSV File Tutorial

Hi Dev,

Today, I am going to learn you how to import/export excel and csv file in laravel 8 application. We will learn how to import and export excel file in laravel 8 application. I writeten simple example for laravel 8 maatwebsite/excel package. I will show you import export excel and csv file using maatwebsite/excel package in laravel 8.

In this tutorial i will give simple and easy example for import/export excel & csv file in laravel 8 and how to export excel file from database in laravel 8. you can easily download excel & csv file from database in laravel 8.

We will easy to create import data from excel and csv to database in laravel 8. we will use maatwebsite/excel composer package for import and export task. maatwebsite/excel provide easy way to import and export using database model.

Here i will full example for import and export excel & csv file in laravel 8. So first follow few step to get example.

Step 1 : Install Laravel 8


In the first step, we need to get fresh laravel 8 version application So let's open terminal and run bellow command to install fresh laravel project.

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

Step 2 : Database Configuration

In second step, we will make database Configuration for example database name, username, password etc for our crud application of laravel 8 So lets open .env file and fill all deatils like as bellow:

.env

DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=here your database name(blog)

DB_USERNAME=here database username(root)

DB_PASSWORD=here database password(root)

Now complete configuration after migrate all the tabel so let's open terminal run bellow artisan command:

php artisan migrate

Step 3 : Install maatwebsite/excel Package

In this step, you can install maatwebsite/excel package using bellow composer command so let's open terinal and run bellow command:

composer require maatwebsite/excel

Now open config/app.php file and add service provider and aliase.

config/app.php

....

'providers' => [

....

Maatwebsite\Excel\ExcelServiceProvider::class,

],

'aliases' => [

....

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

],

.....

Step 3: Create Dummy Records

In this step, you can create some dummy record in "users" table so let's run bellow factory command:

php artisan tinker

User::factory()->count(100)->create()

Step 4 : Add Route

In this step, We have to create three route for export file and add form for import file.

routes/web.php

use App\Http\Controllers\MyExportImportController;

// Export Import Controller

Route::get('importExportView', [ MyExportImportController::class, 'importExportView' ]);

Route::get('export', [ MyExportImportController::class, 'export' ])->name('export');

Route::post('import', [ MyExportImportController::class, 'import' ])->name('import');

Step 5: Create Import Class

In maatwebsite provide way to built import class and we have to use in controller. So it would be great way to create new Import class. So you have to run following command and change following code on that file:

php artisan make:import UsersImport --model=Models/User

app/Imports/UsersImport.php

<?php

namespace App\Imports;

use App\Models\User;

use Maatwebsite\Excel\Concerns\ToModel;

class UsersImport implements ToModel

{

/**

* @param array $row

*

* @return \Illuminate\Database\Eloquent\Model|null

*/

public function model(array $row)

{

\Log::info($row);

return new User([

'name' => $row['0'],

'email' => $row['1'],

'password' => \Hash::make($row['2']),

]);

}

}

You can download demo csv file from here: Demo CSV File

Step 6: Create Export Class

maatwebsite provide way to built export class and we have to use in controller. So it would be great way to create new Export class. So you have to run following command and change following code on that file:

php artisan make:export UsersExport --model=Models/User

app/Imports/UsersImport.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();

}

}

Step 7: Create Controller

In this step, we need a new controller as MyExportImportController. this controller will manage all importExportView, export and import request and return response. you can create MyExportImportController So let's run bellow artisan command to create controller:

php artisan make:controller MyExportImportController

app/Http/Controllers/MyExportImportController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Imports\UsersImport;

use App\Exports\UsersExport;

use Maatwebsite\Excel\Facades\Excel;

class MyExportImportController 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();

}

}

Step 8: Create Blade File

resources/views/import.blade.php

<!DOCTYPE html>

<html>

<head>

<title>Laravel 8 Import Export Excel to database Example - Nicesnippets.com</title>

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />

</head>

<style type="text/css">

.main-section{

margin-top:150px;

}

</style>

<body>

<div class="container main-section">

<div class="row">

<div class="col-md-8 offset-md-2">

<div class="card bg-light mt-3">

<div class="card-header">

Laravel 8 Import Export Excel to database Example - Nicesnippets.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>

</div>

</div>

</body>

</html>

Now we are ready to run our crud application example with laravel 8 so run bellow command for quick run:

php artisan serve

Now you can open bellow URL on your browser:

localhost:8000/importExportView

It will help you...

#Laravel 8

#Laravel