Hey Artisan
Hope you are doing well. Today i am coming with a new tutorial. Today i will teach you how to import and export csv file in laravel 8. In this example i will use maatwebsite/excel composer package for import and export task.
This packages is awesome to export and import csv file in laravel application. If you don't know how to upload export and import csv file in laravel application. I will teach you step by step. So don't worry.
Here, i will give you very simple step by step tutorial of import csv or excel file and export csv or excel file using maatwebsite/excel version 3 in laravel 8 application.
I will show you how to export and import csv file and save it into database also. So let's start our todays tutorial export and import csv file in laravel 8 application.
Step 1 : Install Laravel 8 Project
Here, 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 7 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 7 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 the Last step, let's create import.blade.php(resources/views/import.blade.php) for layout and we will write design code here and put following code:
resources/views/import.blade.php
Hope it will work for you.
#laravel #laravel-8x #laravel-excel