How to Export Database Records to Excel using PHP(Laravel)

Have you encountered a challenge where you need to export records from the database to excel using Laravel?
We will be using Maatwebsite Laravel package
Installation
First require the Maatwebsite laravel package in your composer.json
composer require maatwebsite/excel
The Maatwebsite\Excel\ExcelServiceProvider is registered by default. But you can manually register the ServiceProvider in your config/app.php
'providers' => [
    /*
     * Service Providers...
     */
    Maatwebsite\Excel\ExcelServiceProvider::class,
]
The Excel Facade is discovered and registered by default. But you can add it manually to your config/app.php
'aliases' => [
    ....
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
]
Publish config by running the vendor command
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config
This will create a new config file named config/excel.php. and your setup is completed.
Exporting
On our already seeded database, we will be exporting those records to an excel file.Checkout how to seed in laravel First we create a controller using:
php artisan make:controller ExportToExcelController
then we create an export class in the app\Export using the:
php artisan make:export UsersExport --model=User
the UsersExport is the Export class while the flag --model=User is referencing the model class in use.
The result of the command php artisan make:export UsersExport --model=User:
<?php

namespace App\Exports;

use App\Models\User;
use Maatwebsite\Excel\Concerns\FromCollection;

class UsersExport implements FromCollection
{
    public function collection()
    {
        return User::all();
    }
}
Head over to your ExportToExcelController you can export records
<?php

namespace App\Http\Controllers;

use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;

class ExportToExcelController extends Controller 
{
    public function ExportRecords() 
    {
        return Excel::download(new UsersExport, 'users.xlsx');
    }
}
Ooh one more thing, add a route to be able to access ExportRecords:
Route::get('data/export/', 'ExportToExcelController@ExportRecords');
Thats IT! 😎

39

This website collects cookies to deliver better user experience

How to Export Database Records to Excel using PHP(Laravel)