We have seen a few Laravel tutorials for beginners and through one of our blog posts, we received a query- Laravel 8 export data excel file with example. So here we are with another Laravel tutorial!
In this step-by-step guideline of Laravel 8 export data as excel file, we will build a demo application in which we will use the maatwebsite/excel package for exporting data. You might be familiar with the package; it provides the best way for exporting the data as a CSV file or Excel file.
We will build a demo application where we will see how to implement Excel export functionality in Laravel using the maatwebsite/excel package.
Before starting the development part, let’s see the below video so that you can have an idea of what are we going to build in this blog.
Run this command to create a modal
// Student.php
php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Student extends Model { use HasFactory; public $fillable = [ 'id', 'name', 'email', 'city' ]; }
Here we have to store the student data to create a table and define the table’s fields.
Go to the database/migration folder, then open the migration file and write the following code.
// 2021_07_16_041455_create_students_table
id(); $table->string('name'); $table->string('email'); $table->string('city'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('students'); } }
We will create a table using the above fields.
Now run this command. This command is useful for creating actual tables in the GUI and migrating tables in the database.
To install maatwebsite/excel, run the below-mentioned command
With the help of this package, we can export data into an excel file.
Now open config/app.php and add service provider and alias.
'providers' => [ .... Maatwebsite\Excel\ExcelServiceProvider::class, ], 'aliases' => [ .... 'Excel' => Maatwebsite\Excel\Facades\Excel::class, ],
Routes are required for navigating the web pages for defining routes in our demo app, open routes/web.php, and use the following code.
// web.php
Route::resource('student', StudentController::class); Route::get('student_export',[StudentController::class, 'get_student_data'])->name('student.export');
In this section, we will create an export class and define the model to which it is connected. The maatwebsite package offers a way for building an export class so that we can further use it in the controller.
Run the below command for the same.
Here StudentExport class will define the data that we want to export in our excel file.
Go to app/Exports/ StudentExport.php and make the following changes in your code
// StudentExport.php
The heading() function will define the heading, which would be displayed in an excel file.
The collection() method will return the data which we have to export. Here in our demo app, we will export all student data using the Student Model.
Before creating the controller we have to make a request.
The command for creating a request.
Here are the validation rules applied for entering student data.
public function rules() { return [ 'name' => 'bail|required|string|max:255', 'email' => 'bail|required|string|email|max:255', 'city' => 'bail|required|string|max:255' ]; } }
Run this command to create a resource controller for writing the logic.
Go to app/Http/Controllers/StudentController.php and write a code.
// StudentController.php
name = $request->name; $student->email = $request->email; $student->city = $request->city; $student->save(); return redirect(route('student.index'))->with('success','Data submited successfully!'); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { // } public function get_student_data() { return Excel::download(new StudentExport, 'students.xlsx'); } }
Now we will use the download method of the Laravel excel package within the get_student_data() function. It will accept two parameters: export class and name of the file (you can name it anything you want)
The second parameter is the name of the file in which we want to export the data.
Go to the resources/views folder. Create a new folder layout with a file named a main.blade.php
// main.blade.php
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> @yield('title') @yield('content')
Now create another folder within the views folder named student. We have to add the records of the student, and for that, we will need forms. Forms are defined in the view file.
Here main.blade.php is the parent layout file containing all the common header and footer.
In the Student folder, create two files, namely: create.blade.php and index.blade.php.
The create.blade.php file is required to create the form so that students can enter the data. Open create.blade.php and write the following code.
//create.blade.php
@extends('layout.main') @section('title') Registration form @endsection @section('content') @endsectionStudent Registration Form
In the index.blade.php file, we have displayed the Student data in the table format, and we can easily download the data and export it as an excel file by clicking the Export button.
// index.blade.php
@extends('layout.main') @section('title') Student Data @endsection @section('content') @if ($message = session('success'))@endsection{{ $message }}@endifStudent Data
@foreach ($students as $student) ID Name City @endforeach {{ $student->id }} {{ $student->name }} {{ $student->email }} {{ $student->city }} {{ $students->links() }}
Develop. Maintain. Optimize. Deploy – with Bacancy!
Are you looking for proficient developers to build highly-optimized applications? Get in touch with us to hire Laravel developer. Contact the best, to get the best! Period!
The last section of the tutorial- laravel 8 export data as excel file is to run the app. Now it’s time to run our demo. Run the below command.
After running the server successfully you can see the app working on
http://localhost:8000/student/create
The entire source code is available here: laravel-excel-export-example. Feel free to clone the repo and play around with the code.
So, I hope the tutorial of laravel 8 export data as excel file was helpful to you. Are you a laravel enthusiast and find it difficult for basic tutorials? If yes, then the Laravel tutorials page is for you! Feel free to visit and explore more such laravel tutorials.
Bacancy has dedicated, skilled, and experienced laravel developers with problem-solving skills. If you are looking for laravel developers who can help you with your requirements and project then without wasting your time contact Bacancy and hire laravel developer.
Your Success Is Guaranteed !
We accelerate the release of digital product and guaranteed their success
We Use Slack, Jira & GitHub for Accurate Deployment and Effective Communication.