Site Admin
Site Admin Founder of MeaningArticles
1555 Views

Laravel 8 Import Export Excel & CSV File Example

Hello Dev.

today i will teach you the way to import and export csv file in laravel 8. In this example i will use maatwebsite/excel composer package for import and export excel file.

This packages is great to export and import csv file in laravel app. if you don't know the way to upload export and import csv document in laravel application. i'm able to educate you one by one. So don't worry.

right here, i can provide you quite simple step by step educational of import csv or excel document and export csv or excel document the usage of maatwebsite/excel version 3 in laravel 8 application.

i'm able to show you a way to export and import csv file and store it into database also. So let's start our todays educational export and import csv document in laravel 8 utility.


Step 1: Install Laravel 8 Project

we need install Laravel 8 application using bellow command, So open your terminal OR command prompt and run bellow command:

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


Step 2: Install Maatwebsite Package

In this step we need to install Maatwebsite package via the Composer package manager, so one your terminal and fire 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, we have to require "users" table with some dummy records, so we can simply import and export. So first you have to run default migration that provided by laravel using following command:

php artisan migrate

After that we need to run following command to generate dummy users:

php artisan tinker
factory(App\User::class, 20)->create();


Step 4: Add Routes

In this step, we need to create route of import export file. so open your "routes/web.php" file and add following route.
routes/web.php

Route::get('export', 'MyController@export')->name('export');
Route::get('importExportView', 'MyController@importExportView');
Route::post('import', 'MyController@import')->name('import');


Step 5: Create Import Class

Now we need to create our import class to create import data in laravel application.

php artisan make:import UsersImport --model=User

app/Imports/UsersImport.php

namespace App\Imports;
   
use App\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']),
        ]);
    }
}


Step 6: Create Export Class

Now we have to create our export class to create export data in laravel application. so do it.

php artisan make:export UsersExport --model=User

app/Exports/UsersExport.php

namespace App\Exports;
  
use App\User;
use Maatwebsite\Excel\Concerns\FromCollection;
  
class UsersExport implements FromCollection
{
    public function collection()
    {
        return User::all();
    }
}


Step 7: Create Controller

Now we have to create a controller to handle our declared route methods so that we can export and import csv file in laravel application.
app/Http/Controllers/MyController.php

namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use App\Exports\UsersExport;
use App\Imports\UsersImport;
use Maatwebsite\Excel\Facades\Excel;
  
class MyController 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

In Last step, let's create import.blade.php located in resources/views/import.blade.php for layout and we will write design code here and put following code:
resources/views/import.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>Import Export Excel to database - meaningarticles.com</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />
</head>
<body>
   
<div class="container">
    <div class="card bg-light mt-3">
        <div class="card-header">
            Import Export Excel to database - meaningarticles.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>

i'm hoping it assist you to, thanks for visit my article if you like my article then proportion together with your friend and social platform.