3. 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.
7. // Student.php
< ? php
namespace AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;
class Student extends Model
{
use HasFactory;
public $fillable = [
'id',
'name',
'email',
'city'
];
}
Run this command to create a modal
php artisan make:model Student -m
8. Here we have to store the student data to
create a table and define the table’s fields.
10. 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');
}
}
11. 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.
php artisan migrate
13. To install maatwebsite/excel, run the
below-mentioned command
composer require maatwebsite/excel.
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' => [
....
MaatwebsiteExcelExcelServiceProvider::c
lass,
],
'aliases' => [
....
'Excel' =>
MaatwebsiteExcelFacadesExcel::class,
],
15. 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'[StudentControl
ler::class, 'get_student_data'])-
>name('student.export');
17. 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.
php artisan make:export StudentExport --
model=Student
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
19. 'City',
'Created_at',
'Updated_at'
];
}
public function collection()
{
return Student::all();
}
}
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.
21. Before creating the controller we have to
make a request.
The command for creating a request.
php artisan make::request
StoreStudentRequest
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'
];
}
}
22. Run this command to create a resource
controller for writing the logic.
php artisan make:controller
StudentController –resource
Go to
app/Http/Controllers/StudentController.p
hp 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!');
}
23. /**
* Display the specified resource.
*
* @param int $id
* @return IlluminateHttpResponse
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified
resource.
*
* @param int $id
* @return IlluminateHttpResponse
*/
public function edit($id)
{
//
}
24. /**
* Update the specified resource in
storage.
*
* @param IlluminateHttpRequest
$request
* @param int $id
* @return IlluminateHttpResponse
*/
public function update(Request $request,
$id)
{
//
}
/**
* Remove the specified resource from
storage.
*
* @param int $id
* @return IlluminateHttpResponse
*/
25. 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.
26. The create() function is used to create
the form.
The store() method is used to store the
data in the database
The index() method is used to display
the data.
28. Go to the resources/views folder. Create a
new folder layout with a file named a
main.blade.php
// main.blade.php
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, initial-
scale=1">
<!-- Bootstrap CSS -->
<link
href="https://cdn.jsdelivr.net/npm/bootstra
p@5.0.2/dist/css/bootstrap.min.css"
rel="stylesheet" integrity="sha384-
EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1
ztcQTwFspd3yD65VohhpuuCOmLASjC"
30. 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
33. 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')
<div class="container mt-3">
@if ($message = session('success'))
<div class="alert alert-success mx-1"
role="alert">
{{ $message }}
</div>
37. 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.
php artisan serve
After running the server successfully you
can see the app working on
http://localhost:8000/student/create
41. 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.