Laravel 10 Import Export Excel & CSV File Example
In this post we will give you information about Laravel 10 Import Export Excel & CSV File Example. Hear we will give you detail about Laravel 10 Import Export Excel & CSV File Example And how to use it also give you demo for it if it is necessary.
Laravel Excel is designed at being a Laravel-flavoured PhpSpreadsheet. It is a manageable and elegant wrapper around PhpSpreadsheet to simplify exports and imports. PhpSpreadsheet is a php based library that enables you to read and write different spreadsheet file formats, like Excel and LibreOffice Calc. Laravel Excel has the following features:
- Easily export collections to Excel.
- Export queries with automatic chunking for better performance.
- Queue exports for better performance.
- Easily export Blade views to Excel.
- Easily import to collections.
- Read the Excel file in chunks.
- Handle the import inserts in batches.
If you want to create easy import and export, excel file functionality, this laravel maatwebsite/excel tutorial is best for you.
At the end of this tutorial, you will be able to download or import excel & CSV files directly from the database in laravel application.
Requirements
- PHP:
^8.0|^8.1
- Laravel:
9.0
- PhpSpreadsheet:
^1.15
- PHP extension
php_zip
enabled - PHP extension
php_xml
enabled - PHP extension
php_gd2
enabled - PHP extension
php_iconv
enabled - PHP extension
php_simplexml
enabled - PHP extension
php_xmlreader
enabled - PHP extension
php_zlib
enabled
Step 1: Install Laravel Project
First, open Terminal and run the following command to create a fresh laravel project:
composer create-project --prefer-dist laravel/laravel laravel-excel
or, if you have installed the Laravel Installer as a global composer dependency:
laravel new laravel-excel
Step 2: Configure Database Details
After, Installation Go to the project root directory, open .env file, and set database detail as follow:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=<DATABASE NAME>
DB_USERNAME=<DATABASE USERNAME>
DB_PASSWORD=<DATABASE PASSWORD>
Also see: Laravel 10 CRUD Example Tutorial for Beginners
Step 3: Install maatwebsite/excel package
You can install Laravel Excel via composer. You’ve to run this command for the installation.
composer require maatwebsite/excel
If composer require fails on Laravel 10 because of the simple-cache
dependency, you will have to specify the psr/simple-cache
version as ^2.0
in your composer.json to satisfy the PhpSpreadsheet dependency. You can install both at the same time as:
composer require psr/simple-cache:^2.0 maatwebsite/excel
Register Plugin’s Service in Providers & Aliases
You can have the following code placed inside the config/app.php file.
'providers' => [
MaatwebsiteExcelExcelServiceProvider::class,
],
'aliases' => [
'Excel' => MaatwebsiteExcelFacadesExcel::class,
],
Execute the vendor, publish the command, and publish the config.
php artisan vendor:publish --provider="MaatwebsiteExcelExcelServiceProvider" --tag=config
This will create a new config file named config/excel.php
.
Step 4: Generate Fake Data and Migrate Table
In the First step, We migrate the user table. After migration run successfully We moved to the second step.
php artisan migrate
In the Second Step, We generate the fake record. Here We use tinker to generate the fake records. You can use a different method as of your requirement.
php artisan tinker
After Opening the tinker, you need to run this command to generate the fake records in our database.
User::factory()->count(100)->create();
Step 5: Create a Routes
In this step, We will add a route to handle requests for import and export files.
use AppHttpControllersUserController;
Route::get('/file-import',[UserController::class,'importView'])->name('import-view');
Route::post('/import',[UserController::class,'import'])->name('import');
Route::get('/export-users',[UserController::class,'exportUsers'])->name('export-users');
Step 6: Create Import Class
Maatwebsite provides a way to build an import class and we have to use it in the controller. So it would be a great way to create a new Import class. So you have to run the following command and change the following code on that file:
php artisan make:import ImportUser --model=User
app/Imports/ImportUser.php
<?php
namespace AppImports;
use AppModelsUser;
use MaatwebsiteExcelConcernsToModel;
class ImportUser implements ToModel
{
/**
* @param array $row
*
* @return IlluminateDatabaseEloquentModel|null
*/
public function model(array $row)
{
return new User([
'name' => $row[0],
'email' => $row[1],
'password' => bcrypt($row[2]),
]);
}
}
Here you can see map CSV or excel column value to our Eloquent Model. You need to format that CSV or excel column as you map in your import class.
Also see: How to Install MongoDB on Ubuntu 20.04
Step 7: Create Export Class
Maatwebsite provides a way to build an export class and we have to use it in the controller. So it would be a great way to create a new export class. So you have to run the following command and change the following code on that file:
php artisan make:export ExportUser --model=User
app/Exports/ExportUser.php
<?php
namespace AppExports;
use AppModelsUser;
use MaatwebsiteExcelConcernsFromCollection;
class ExportUser implements FromCollection
{
/**
* @return IlluminateSupportCollection
*/
public function collection()
{
return User::select('name','email')->get();
}
}
Step 8: Create Controller
Next, We have to create a controller to display a form to upload CSV or excel file records. Let’s Create a controller named UserController
using the command given below:
php artisan make:controller UserController
Once the above command execute, it will create a controller file UserController.php in the app/Http/Controllers directory. Open the UserController.php file and put this code into that file.
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use MaatwebsiteExcelFacadesExcel;
use AppImportsImportUser;
use AppExportsExportUser;
use AppModelsUser;
class UserController extends Controller
{
public function importView(Request $request){
return view('importFile');
}
public function import(Request $request){
Excel::import(new ImportUser, $request->file('file')->store('files'));
return redirect()->back();
}
public function exportUsers(Request $request){
return Excel::download(new ExportUser, 'users.xlsx');
}
}
Step 9: Create Blade / View Files
We have reached the last step. In general, here we need to formulate the view for handling importing and exporting through the frontend. Create a resources/views/importFile.blade.php file to set up the view. Place the following code inside the blade view file:
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel 10 Import Export Excel & CSV File - onlinecode</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
</head>
<body>
<div >
<h3 >
Laravel 10 Import Export Excel & CSV File - <a href="https://onlinecode.org/laravel-10-import-export-excel-csv-file" target="_blank">onlinecode</a>
</h3>
<form action="{{ route('import') }}" method="POST" enctype="multipart/form-data">
@csrf
<div >
<div >
<input type="file" name="file" id="customFile">
<label for="customFile">Choose file</label>
</div>
</div>
<button >Import Users</button>
<a href="{{ route('export-users') }}">Export Users</a>
</form>
</div>
</body>
</html>
Run Laravel Application
Lastly, we have to run the Laravel application, for this, we have to go to the command prompt, and write the following command:
php artisan serve
After executing this command, Open http://localhost:8000/file-import in your browser.
Thank you for reading this blog.
Also see: How To Install Vue 3 in Laravel 10 From Scratch
. .
If you have any queries or doubts about this topic please feel free to contact us. We will try to reach you.
Hope this code and post will helped you for implement Laravel 10 Import Export Excel & CSV File Example. if you need any help or any feedback give it in comment section or you have good idea about this post you can give it comment section. Your comment will help us for help you more and improve us. we will give you this type of more interesting post in featured also so, For more interesting post and code Keep reading our blogs