Laravel

Laravel 7/8 – Excel and CSV Import Export to Database using maatwebsite/excel with Example.

Excel file importexport to the database is a very common functionality in any web application. so, in this article, I will share with you how to excel import-export to the database in laravel 8 application with example. if you never built an export-import excel file to the database in laravel application then don’t worry in this article I will show you steps by steps on how to export the import excel database in our laravel 8 application.

Laravel has many helpful packages for built many many functionalities. so, in this article, i will use maatwebsite/excel laravel package for built excel import-export functionality in our laravel 8 application.

In this demo example e are create one transaction table and we are export this table data into excel or CSV files and also import excel file data from the database. our table looks like this.

Before implementing excel/CSV import-export functionality in laravel8 help of maatwebsite/excel package. check the following requirement.

Step – 1 : Package Installation

in the first step, we need to install the maatwebsite/excel package in our laravel 8 application.

composer require maatwebsite/excel

After installing the package, open your Laravel config file located at config/app.php and add the following lines. “(it is optional for Laravel version >= 5.5)

'providers' => [ 
/*      
 *Package Service Providers...      
 */   
     Maatwebsite\Excel\ExcelServiceProvider::class,
 ]

'aliases' => [     
   ...     
   'Excel' => Maatwebsite\Excel\Facades\Excel::class,
 ]

then after publish the service provider running the following command in your terminal.

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"

This will create a new config file named “config/excel.php“. you can also change the default setting in this file and set new one options on your own requirements.

Step – 2 : Create Migrations

In this step, we need to create “transactions” table migration in our laravel 8 application using the following command in terminal.

php artisan make:migration create_transactions_tbl --create=transactions

then open your created migration file into the “database/migrations” a folder and write the following code into it.

after done this run the “php artisan migrate” command in your terminal for the execute your created migration.

Step – 3 : Create Model

Now, we need to create “Transaction.php” model help of running the following command in the terminal.

php artisan make:model Transaction

after running the above command in your terminal then “Transaction.php” file will be created in the “app/Models” folder.

app/Models/Transaction.php

Step – 4 : Create Route

now, create the following route in the “routes/web.php” file.

use Illuminate\Support\Facades\Route; 
use App\Http\Controllers\ExcelController; 

// Route for view/blade file. Route::get('importExportView'[ExcelController::class, 'importExportView'])->name('importExportView'); 

// Route for export/download tabledata to .csv, .xls or .xlsx 
Route::get('exportExcel/{type}', [ExcelController::class, 'exportExcel'])->name('exportExcel'); 

// Route for import excel data to database. 

Route::post('importExcel', [ExcelController::class, 'importExcel'])->name('importExcel');

Step – 5 : Create Import Class

maatwebsite provides a way to built 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 TransactionsImport --model=Transaction

Excel file demo screenshot

IMAGE

app/Imports/TransactionsImport.php

Step – 6 : Create Export Class

now we need to create Export class help of the following command in the terminal.

php artisan make:export TransactionsExport --model=Transaction

app/Exports/TransactionsExport.php

Step – 7 : Create Controller

Now, create the “ExcelController.php” file in the “app\Http\Controllers” folder using the following command run in your terminal.

php artisan make:controller ExcelController

app\Http\Controllers\ExcelController.php

namespace App\Http\Controllers; 

use App\Models\Transaction; 
use Illuminate\Http\Request; 
use App\Exports\TransactionsExport; 
use App\Imports\TransactionsImport;

class ExcelController extends Controller { 

 /**
   * @return \Illuminate\Support\Collection
*/     

public function importExportView()
{
 return view('excel.index');
}

 /** 
  * @return \Illuminate\Support\Collection
*/     
 public function exportExcel($type)      
  {         
    return \Excel::download(new TransactionsExport,  'transactions.'.$type);     
}

 /**     
 * @return \Illuminate\Support\Collection    
*/     
public function importExcel(Request $request)      
{         
\Excel::import(new TransactionsImport,$request->import_file);         
\Session::put('success', 'Your file is imported successfully in database.');  
                        
return back();     
} 
}

Step – 8 : Create Blade File

into the last step, we will create one file resources/views/excel/index.blade.php and write the following code into this file.

<!DOCTYPE html>
 <html>
  <head>
    <title>Laravel 8 Excel CSV Import/Export -  laravelcode.com
</title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/css/bootstrap.css" rel="stylesheet">
</head>
<body>
  <div class="container" style="margin-top: 5rem;"> 

<h2 class="text-title">Import Export Excel/CSV - LaravelCode
</h2>
<a href="{{ route('exportExcel', 'xls') }}">
  <button class="btn btn-success">Download  Excel xls
    </button>
</a>

<a href="{{ route('exportExcel', 'xlsx') }}">              
<button class="btn btn-success">Download Excel xlsx
</button>
</a>     

<a href="{{ route('exportExcel', 'csv') }}">
 <button class="btn btn-success">Download CSV</button></a>   

  <form style="border: 4px solid #a1a1a1;margin-top: 15px;padding: 10px;" action="{{ route('importExcel') }}" class="form-horizontal" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
    <input type="file" name="import_file" />     
              <button class="btn btn-primary">Import File</button>     
</form> 
</div>
</body>
</html>

Now your excel import-export functionality done. now just run your application using the following artisan command.

php artisan serve

now, open the following URL in the browser.

http://localhost:8000/importExportView

I hope you like this article.

Shaiv Roy

Hy Myself shaiv roy, I am a passionate blogger and love to share ideas among people, I am having good experience with laravel, vue js, react, flutter and doing website and app development work from last 7 years.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button