welcome guys, In this article Here, we will know how to export excel in laravel. Making a export file and download in Laravel is simple and easy. if you have question about laravel export then i will give simple example with solution.
Step 1: Building a New Application
You can ignore this step if you already have an application downloaded or else, run the following command to create a brand new laravel project.
composer create-project laravel/laravel laravel-excel --prefer-dist
After downloaded new application or already installed then moved our application directory run the following command or using your own method
cd laravel-excel
Step 2: Configure Database Connection
In this type of project, we must give precedence to the database connection, generically it should be configured before getting started. Incorporate the following code in .env file with your database details.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
Step 3: Create a Model with Migration
Run this command to create a modal with migration
php artisan make:model Item -m
<? php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Item extends Model
{
use HasFactory;
}
Step 4: Install maatwebsite/exel Package
Now, we will install the maatwebsite/excel package using the composer command.
composer require maatwebsite/excel
After install maatwebsite/excel package we have adding the service provider in config/app.php file and add the following code.
The Excel facade is also auto-discovered.
'providers' => [
/*
* Package Service Providers...
*/
Maatwebsite\Excel\ExcelServiceProvider::class,
]
If you want to add it manually, add the Facade in config/app.php:
'aliases' => [
...
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
]
To publish the config, run the vendor publish command:
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"
Step 5: Create Dummy Data Using Tinker
After adding aliases and providers are adding some dummy records in the database using the below command.
php artisan tinker
factory(App\Item::class, 50)->create();
Step 6: Create ItemController
php artisan make:controller ItemController
After running this command we will add the following code to the controller.
App/Http/Controllers/ItemController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Excel;
use App\Models\Item;
use App\Exports\ItemsExport;
class ItemController extends Controller
{
/**
* THis method use for exports as excel files
* @return \Illuminate\Contracts\Support\Renderable
*/
public function itemExportExcel(Request $request){
$fileName = Carbon::now()->toDateTimeString().'items-list.xlsx';
return Excel::download(new ItemsExport($request), $fileName);
}
}
Step 7: Create ItemsExport Class
Now, we will create the export class using the below command.
php artisan make:export ItemsExport --model=Item
After running this command you will find the app/Exports/ItemsExport.php file.
<?php
namespace App\Exports;
use App\Models\Item;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\WithHeadings;
class ItemsExport implements FromCollection,WithMapping,WithHeadings
{
use Exportable;
protected $request;
public function __construct($request)
{
$this->request = $request;
}
/**
* @return \Illuminate\Support\Collection
*/
public function headings(): array
{
return[
'Sr',
'Name',
'Serial Number',
'Part Number',
'Model Number',
];
}
public function map($data): array
{
return $data;
}
// set the collection of members to export
public function collection()
{
$request = $this->request;
$items = Item::query();
$items = $items->get();
return $items->map(function($data,$key){
return [
'item_serial' => $key + 1,
'item_name' => $data->item_name,
'item_serial_number'=> $data->item_serial_number,
'item_part_number' => $data->item_part_number,
'item_model_number' => $data->item_model_number,
];
});
}
}
Step 8: Add Route
Open routes/web.php file and add the following route.
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ItemController;
Route::group(['prefix'=>'export/excel'], function(){
Route::get('/item', [ItemController::class, 'itemExportPdf'])->name('item.export.pdf');
});
Run Laravel App:
All the required steps have been done, now you have to type the given below command and hit enter to run the Laravel app:
php artisan serve
Now, Go to your web browser, type the given URL and view the app output:
http://localhost:8000/export/excel/item