Exporting Excel files come handy when you're building some inventory kind of an application. In this short tutorial, we'll go through on exporting excel files with Laravel & look on for some crazy hacks and tricks in between.
Installing the package
composer require maatwebsite/excel
Add the Service Provider & Facade
Right into your config/app.php
, add the service provider.
'providers' => [ Maatwebsite\Excel\ExcelServiceProvider::class, ]
and the facade
'aliases' => [ 'Excel' => Maatwebsite\Excel\Facades\Excel::class, ]
Setup a simple route
Route::get( '/export', 'DataExporter@index' );
Add the functionality to the DataExporter Class
class DataExporter { public function index() { \Excel::create( 'file_name', function ( $excel ) { /** Set the spreadsheet title, creator, and description */ $excel->setTitle( 'your_file_title' ); $excel->setCreator( 'creator_name' )->setCompany( 'company_name' ); $excel->setDescription( 'This is the description of the exported excel file' ); /** Creating a simple sheet */ $excel->sheet( 'sheet_name', function ( $sheet ) { /** Manipulating Rows */ $sheet->row( '1', array( 'First Row Heading' ) ); $users = User::all(); /** * Filter through each of users * @var $key * @var $value */ foreach ( $users as $key => $value ) { $sheet->SetCellValue( "A" . $key, $value->name ); } } ); } )->get( 'xlsx' ); } }
Updated for v3.*
There's been major changes in the newer version of this package. So we'll be using the similar User collection approach and will achieve it using the newer version.
We'll move the User collection to a separate file. Let's name is UserExporter.php
class UserExporter implements FromCollection, WithHeadings,ShouldAutoSize { /** * @return Collection */ public function collection() { return User::all(); } /** * @return array */ public function headings(): array { return [ 'First Row Heading', ]; } }
Now back to our DataExporter
class, let's simply things up a little in our index()
method.
return Excel::download( new UserExporter(), 'users.xlsx' );
Conclusion
Well thats it, simply hit the /export
in your browser and you'll get a popup to download your excel file. Generating an excel export was never this simple before. For more information about this awesome package, check out the documentation website.