Easy Excel exports in Laravel

Last Updated at : March 1, 2019 By - Usama Muneer | 3690

    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.

     

    blog user
    Usama Muneer

    A web enthusiastic, self-motivated & detail-oriented professional Full-Stack Web Developer from Karachi, Pakistan with experience in developing applications using JavaScript, WordPress & Laravel specifically. Loves to write on different web technologies with an equally useful skill to make some sense out of it.

    Related Posts

    Imagine you have a scenario where you need to add multiple actions to your Laravel Notification where you can add as many as button components with different URLs.

    Importing Excel files come handy when you’re building some large scale inventory kind of an application where you need to import set of data from CSV or excel files. In this short tutorial, we’ll go through on importing excel files with Laravel & look on for some crazy hacks and tricks in between.

    Gear up fellow developers, another Laravel Meetup is coming back to Lahore & it will be a great milestone while helping our fellow web developers across the city to become motivated and will help them grow as Laravel developers.

    Getting an app developed is not the only thing that one needs to ensure in terms of digital visibility and e-commerce. Yes, having an app is important but to stay updated and to be abreast with the competition Optimization of performance is necessary.