In this post I will give you laravel 8 import export csv and excel file example. We will simple create import data to xls, csv file and also we will import data to database using csv file in laravel 8 application.
Using maatwebsiteexcel laravel 8 example you can easily import and export csv and excel file. For laravel 8 import csv/excel file use import class, laravel 8 export csv/excel file use export class.
Using this example we can easily import and export and download the csv & excel file from the database using the maatwebsite/excel composer package. maatwebsite/excel provide easy way to import and export csv file in laravel 8 using database model.
So let's start how to import csv and excel file in laravel 8.
We are creating new project setup for this example ,So create new project using below command.
composer create-project --prefer-dist laravel/laravel import_export
In second step, we will configure database for example database name, username, password etc for our example in laravel. So, open .env file and fill all details like as bellow:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database name(import_export_demo)
DB_USERNAME=database username(root)
DB_PASSWORD=database password(NULL)
Now, we are going to install the Maatwebsite package using the below command.
composer require maatwebsite/excel
After that you need to add providers and alias in your project's config/app.php file
'providers' => [
.......
Maatwebsite\Excel\ExcelServiceProvider::class,
],
'aliases' => [
.......
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
],
After adding aliases and providers are adding some dummy records in databse using below command.
php artisan tinker
factory(App\User::class, 100)->create();
Now in this step we are creating new route for this example in this path routes/web.php
Route::get('import_export', 'App\Http\Controllers\Import_Export_Controller@importExport');
Route::post('import', 'App\Http\Controllers\Import_Export_Controller@import');
Route::get('export', 'App\Http\Controllers\Import_Export_Controller@export');
Create the Import_Export_Controller using the following command.
php artisan make:controller Import_Export_Controller
After run this command we need to add below code in this controller.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Exports\ExportUsers;
use App\Imports\ImportUsers;
use Maatwebsite\Excel\Facades\Excel;
class Import_Export_Controller extends Controller
{
public function importExport()
{
return view('import');
}
public function export()
{
return Excel::download(new ExportUsers, 'users.xlsx');
}
public function import()
{
Excel::import(new ImportUsers, request()->file('file'));
return back();
}
}
Now, we will create the import class using the below command.
php artisan make:import ImportUsers --model=User
After run this command you will find ImportUsers.php in this path app\Imports\ImportUsers.php add below code in this file.
<?php
namespace App\Imports;
use App\User;
use Maatwebsite\Excel\Concerns\ToModel;
class ImportUsers implements ToModel
{
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
return new User([
'name' => $row[0],
'email' => $row[1],
]);
}
}
Now, we will create the export class using the below command.
php artisan make:export ExportUsers --model=User
After run this command you will find ExportUsers.php in this path app\Export\ExportUsers.php add below code in this file.
<?php
namespace App\Exports;
use App\User;
use Maatwebsite\Excel\Concerns\FromCollection;
class ExportUsers implements FromCollection
{
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
return User::all();
}
}
Now create import.blade.php file for view in this path resources/views/import.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<title>Laravel 8 Import Export CSV/EXCEL File Example - Techsolutionstuff</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h3>Laravel 8 Import Export CSV/EXCEL File Example - Techsolutionstuff</h3>
<form action="{{ url('import') }}" method="POST" name="importform"
enctype="multipart/form-data">
@csrf
<div class="form-group">
<label for="file">File:</label>
<input id="file" type="file" name="file" class="form-control">
</div>
<div class="form-group">
<a class="btn btn-info" href="{{ url('export') }}">Export File</a>
</div>
<button class="btn btn-success">Import File</button>
</form>
</div>
</body>
</html>
Copy below command and run in terminal.
php artisan serve
And finally you can run this project on your browser.
You might also like :