In this article, we will see laravel 9 import export csv and excel files. We will import data to the database using csv file in laravel 9. Using the maatwebsite/excel plugin you can easily import and export csv and excel files in laravel 9 examples. For the laravel 9 import csv and excel file, we will use the import class, for laravel 9 export csv and excel files will use the export class.
Using this example we can easily import, export, and download the csv & excel file from the database using the maatwebsite/excel composer package. maatwebsite/excel provides an easy way to import and export csv files in laravel 9. So let's see the import export csv excel file in laravel 9.
Step 1: Install Laravel 9 For Import Export CSV and Excel File
Step 2: Setup Database Configuration
Step 3: Install maatwebsite/exel Package
Step 4: Create Dummy Records Using Tinker
Step 5: Create New Route
Step 6: Add Controller
Step 7: Create Import Class
Step 7: Run Import Export CSV and Excel File Project
In this step, we will install laravel 9 using the following command,
composer create-project --prefer-dist laravel/laravel import_export_csv_excel
In this step, we will configure the database configuration. So, open the .env file and add the details.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=import_export_csv_excel
DB_USERNAME=root
DB_PASSWORD=root
Now, we will install the maatwebsite package using the below command.
composer require maatwebsite/excel
After adding aliases and providers are adding some dummy records in the database using the below command.
php artisan tinker
factory(App\User::class, 100)->create();
In this step, we are creating a new route in the web.php file.
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ImportExportController;
/*
|--------------------------------------------------------------------------
| 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::controller(ImportExportController::class)->group(function(){
Route::get('import_export', 'importExport');
Route::post('import', 'import')->name('import');
Route::get('export', 'export')->name('export');
});
Now, we will create the ImportExportController using the following command.
php artisan make:controller ImportExportController
After running this command we will add the following code to the controller.
App/Http/Controllers/ImportExportController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Exports\ExportUsers;
use App\Imports\ImportUsers;
use Maatwebsite\Excel\Facades\Excel;
class ImportExportController 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 running this command you will find the ImportUsers.php file.
app\Imports\ImportUsers.php
<?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 running this command you will find the ExportUsers.php file.
app\Export\ExportUsers.php
<?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, we will create the import.blade.php file.
resources/views/import.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<title>Laravel 9 Import Export CSV And EXCEL File - 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 9 Import Export CSV And EXCEL File - Techsolutionstuff</h3>
<form action="{{ route('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="{{ route('export') }}">Export File</a>
</div>
<button class="btn btn-success">Import File</button>
</form>
</div>
</body>
</html>
Now, run the below command in the terminal.
php artisan serve
Open the below URL in the browser.
You might also like: