Hello Dev,
Today, i we will show you laravel 8 import export excel file. This article will give you simple example of laravel 8 import export excel file. you will learn laravel 8 import export excel file. So let’s follow few step to create example of laravel 8 import export excel file.
Step 1:- Install Laravel 8
composer create-project --prefer-dist laravel/laravel importexport
Connect Database .env
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=databse DB_USERNAME=root DB_PASSWORD=
Step 2:- Install maatwebsite/excel Package
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, ],
Then just migrate it by using following command
php artisan migrate
Step 3 :- Create Authentication
composer require laravel/ui php artisan ui bootstrap --auth
Step 4: Create Dummy Users
php artisan tinker \App\Models\User::factory(10)->create();
Step 5:- Add Routes
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('/', function () { return view('welcome'); }); Auth::routes(); Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home'); Route::get('excel-csv-file', [MyController::class, 'index']); Route::post('import-excel-csv-file', [MyController::class, 'importExcelCSV']); Route::get('export-excel-csv-file/{slug}', [MyController::class, 'exportExcelCSV']);
Step 6:- Create Import Class
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']), ]); } }
Step 7:- Create Export Class
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(); } }
Step 8:- Add Controller
app/Http/Controllers/MyController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Exports\UsersExport; use App\Imports\UsersImport; use Maatwebsite\Excel\Facades\Excel; use App\Models\User; class MyController extends Controller { public function index() { return view('import'); } public function importExcelCSV(Request $request) { $validatedData = $request->validate([ 'file' => 'required', ]); Excel::import(new UsersImport,$request->file('file')); return redirect('excel-csv-file')->with('status', 'The file has been excel/csv imported to database in laravel 8'); } public function exportExcelCSV($slug) { return Excel::download(new UsersExport, 'users.'.$slug); } }
Step 9:- Create Blade File
resources/views/import.blade.php
<!DOCTYPE html> <html> <head> <title>Laravel 8 Import Export Excel File - codeplaners.com</title> <meta name="csrf-token" content="{{ csrf_token() }}"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"> </head> <body> <div class="container mt-5"> @if(session('status')) <div class="alert alert-success"> {{ session('status') }} </div> @endif <div class="card"> <div class="card-header font-weight-bold"> <h2 class="float-left">Laravel 8 Import Export Excel File - codeplaners.com</h2> <h2 class="float-right"><a href="{{url('export-excel-csv-file/xlsx')}}" class="btn btn-success mr-1">Export Excel</a><a href="{{url('export-excel-csv-file/csv')}}" class="btn btn-success">Export CSV</a></h2> </div> <div class="card-body"> <form id="excel-csv-import-form" method="POST" action="{{ url('import-excel-csv-file') }}" accept-charset="utf-8" enctype="multipart/form-data"> @csrf <div class="row"> <div class="col-md-12"> <div class="form-group"> <input type="file" name="file" placeholder="Choose file"> </div> @error('file') <div class="alert alert-danger mt-1 mb-1">{{ $message }}</div> @enderror </div> <div class="col-md-12"> <button type="submit" class="btn btn-primary" id="submit">Submit</button> </div> </div> </form> </div> </div> </div> </body> </html>
Now we are ready to run our project.
php artisan serve
http://localhost:8000/excel-csv-file