Laravel Report Excel with PhpSpreadsheet

0
155

Hello laravel PHP lover’s, this tutorial,is containts article how to use library PhpSpreadsheet in Laravel. This tutorial will give you a simple guide and easy way how to setup PhpSpreadsheet in Laravel project, and use it to build file report excel in Laravel.

PhpSpreadsheet is a library written in pure PHP and offers a set of classes that allow you to read and write various spreadsheet file formats such as Excel and LibreOffice Calc. Here you will learn step by step how to setup PhpSpreadsheet in your Laravel project.

So if you are looking for example of Laravel PhpSpreadsheet, this simple article will give you simple example of how to use PhpSpreadsheet in Laravel project of you. So let’s scroll below to explore step by step build Laravel Report Excel with PhpSpreadsheet.

Step 1 Install Laravel Project
Step 2 Setup Database Connection
Step 3 Create Model, Database Migration, and Factory Faker Employee
Step 4 Running Database Migration using Artisan
Step 5 Add Dummy Record Data into tabel
Step 6 Add Route
Step 7 Install PhpSpreadsheet
Step 8 Create Laravel Blade File
Setep 9 Modify Controller EmployeeController
Step 10 Run Laravel Development Server

Halo teman-teman, untuk membuat laporan excel pada project Laravel menggunakan PhpSpreadsheet langkah-langkahnya adalah seperti berikut :

Step 1. Install Laravel Project

Untuk membuat report excel pada laravel dengan PhpSpreadsheet. Pertama-tama yang harus kita lakukan adalah membuat pproject laravel pada local komputer kita masing-masing. Untuk melakukan ini semua silahkan buka jendela Terminal/ Command Prompt komputer Anda kemudian jalankan perintah composer dibawah untuk menginstall project Laravel PhpSpreadsheet report excel project:

composer create-project –prefer-dist laravel/laravel your_project_name_here “7.*”

Perhatikan perintah composer diatas, dalam membuat project Laravel Report Excel with PhpSpreadsheet disini saya menggunakan Laravel versi 7.

Step 2 Setup Database Connection

Setelah sukses menginstall fresh apllication Laravel pada project Anda, maka langkah selanjutnya melakukan setup database configuration atau melakukan konfig database pada project Laravel. Pada tutorial kali ini saya menggunakan environment file “.env” dalam melakukan konfig database. File environment bisa kita jumpai pada root project Laravel. Silahkan buka project laravel Anda dan temukan file “.env”, buka file tersebut dan lakukan konfigurasi database seperti berikut :

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3307
DB_DATABASE=laravelexcel
DB_USERNAME=root
DB_PASSWORD=

Step 3 Create Model, Database Migration, and Factory Faker Employee

Pada tahap ini saya akan membuat laravel model, database migrations, serta controller sekaligus melalui sebuah perintah artisan. Buka kembali jendela Terminal/ Command Prompt Anda, lalu jalankan perintah artisan berikut :

php artisan make:model Employee -mcr

Perintah diatas akan sekaligus menciptakan file laravel model, database migrations, serta file controller pada project Laravel Anda.

Lalu lanjutkan dengan membuat file laravel Factory Faker Employee, masih aktif pada jendela Terminal/ Command Prompt lalu jalankan perintah artisan berikut :

php artisan make:factory EmployeeFactory –model=Employee

Perintah artisan diatas akan menciptakan satu buah file faker yang terletak pada folder “database\factories”.

Step 4 Running Database Migration using Artisan

Tahap selanjutnya adalah membuat tabel employees pada database project laravel, untuk membuat sebuah tabel disini saya akan menggunakan perintah artisan laravel. Sebelum menjalankan perintah artisan database migrations laravel, sebaiknya telerbih dahulu kita lakukan sedikit modifikasi pada file AppServiceProvider.php yang terletak pada folder folder “app\Providers”, buka file tersebut lalu kita lakukan sedikit modifikasi dengan menambahkan sedikit code seperti berikut :

<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema; // tambahkan code ini
class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Schema::defaultStringLength(191); // tambahkan code ini
    }
}

Tujuannya adalah menghindari error saat menjalankan perintah artisan database migrations pada Laravel.

Selanjutnya adalah melakukan modifikasi file migrations, yaitu file …_create_employees_table.php yang terletak pada folder “database\migrations\”, buka file database migrations tersebut lalu lakukan modifikasi dengan menambahkan beberapa potongan code untuk membentuk sebuah tabel pada database project Laravel, seperti berikut :

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateEmployeesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create(’employees’, function (Blueprint $table) {
            $table->bigIncrements(‘id’);
            $table->string(‘name’);
            $table->string(’email’);
            $table->string(‘position’);
            $table->string(‘address’);
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists(’employees’);
    }
}

Setelah kebutuhan akan tabel selesai, maka saatnya kita jalankan perintah artisan migrate seperti berikut :

php artisan migrate

Perintah artisan diatas jika kita jalankan akan menciptakan beberapa tabel pada database seperti berikut :

create tabel using database migrations
create tabel using database migrations

Step 5 Add Dummy Record Data into tabel

Langkah selanjutnya adalah kita menambahkan dummy record data (data fake) pada tabel employees pada database project Laravel. Untuk membuat dummy record data langkah yang perlu kita lakukan adalah dengan melakukan modifikasi pada file fake EmployeeFactory.php yang terletak pada folder “database\factories”, buka file faker tersebut lalu tambahkan code seperti berikut :

<?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */
//use App\Employee;
use Faker\Generator as Faker;
$factory->define(App\Employee::class, function (Faker $faker) {
    return [
        ‘name’ => $this->faker->name,
        ’email’ => $this->faker->unique()->safeEmail,
        ‘position’ => $this->faker->jobTitle,
        ‘address’ => $this->faker->address,
    ];
});

Selanjutnya adalah menjalankan perintah artisan berikut untuk menciptakan data dummy.

php artisan tinker

Lalu jalankan perintah code berikut pada jendela laravel tinker.

factory(App\Employee::class, 100)->create();

php artisan factory tinker
php artisan factory tinker, Photo : Jogjatech.com

Step 6 Add Route

Pada tahap ini saya menambahkan routing untuk mengakses url data pegawai, sehingga saya menambahkan sebuah route pada folder “routes\web.php” seperti berikut :

Route::get(‘/spreadsheet’,’EmployeeController@index’);
Route::get(‘/export’,’EmployeeController@export’)->name(‘export’);

Step 7 Install PhpSpreadsheet

Untuk membuat laporan laravel excel menggunakan PhpSpreadsheet maka kita harus menginstallnya pada project laravel kita. Aktif pada jendela/command prompt project laravel Anda lalu jalankan perintah artisan seperti berikut :

composer require phpoffice/phpspreadsheet

Laravel Report Excel with PhpSpreadsheet Project
Laravel Report Excel with PhpSpreadsheet Project, Photo: Jogjatech.com

Step 8 Create Laravel Blade File

Langkah selanjutnya adalah menambahkan file blade pada project Laravel, dimana file blade ini akan kita gunakan untuk menampilkan data pegawai dari tabel employees, dan di file blade ini pula nantinya kita akan membuat tombol export untuk menjalankan project Laravel Report Excel with PhpSpreadsheet yang kita bahas pada tutorial ini.

Buatlah sebuah file blade dengan nama index.blade.php dan letakkan pada folder “resources\views\pegawai\index.blade.php” Kemudian lakukan modifikasi sehingga menjadi seperti berikut :

@extends(‘layouts.app’)
@section(‘content’)
<div class=”container”>
    <div class=”row justify-content-center”>
        <div class=”col-md-12″>
            <div class=”card”>
                <div class=”card-header”>Data Pegawai
                <button type=”button” class=”btn btn-sm btn-primary export”>Export</button>
                </div>
                <div class=”card-body”>
                    <table id=”tbl_list” class=”table table-striped table-bordered” cellspacing=”0″ width=”100%”>
                        <thead>
                            <tr>
                                <th>ID</th>
                                <th>Name</th>
                                <th>Email</th>
                                <th>Position</th>
                                <th>Address</th>
                            </tr>
                        </thead>
                        <tbody>  
                            @foreach($pegawai as $row)
                            <tr>
                                <td>{{$row->id}}</td>
                                <td>{{$row->name}}</td>
                                <td>{{$row->email}}</td>  
                                <td>{{$row->position}}</td> 
                                <td>{{$row->address}}</td>                             
                            </tr>
                            @endforeach
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection
@push(‘scripts’)
<script type=”text/javascript”>
$(document).ready(function () {
    $.ajaxSetup({headers: { ‘X-CSRF-TOKEN’: $(‘meta[name=”csrf-token”]’).attr(‘content’) }});             
        //export excel
        $(‘.export’).on(“click”,function() {                    
            window.location =”{{route(‘export’)}}”;                    
        });               
 });
</script>
@endpush

Setep 9 Modify Controller EmployeeController

Setelah semua persiapan diatas kita lalui, maka selanjutnya adalah kita menyentuh file controller. Buka file EmployeeController.php pada folder “app\Http\Controllers” lalu lakukan modifikasi dengan menambahkan code pada method index(), serta menambahkan method export() seperti berikut:

<?php
namespace App\Http\Controllers;
use App\Employee;
use Illuminate\Http\Request;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
class EmployeeController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $pegawai = Employee::all();
        return view(‘pegawai.index’,[‘pegawai’=>$pegawai]);
    }
    public function export()
    {
        $spreadsheet = new Spreadsheet();
        $sheet = $spreadsheet->getActiveSheet();
        $sheet->setCellValue(‘A1’, ‘ID’);
        $sheet->setCellValue(‘B1’, ‘Name’);
        $sheet->setCellValue(‘C1’, ‘Email’);
        $sheet->setCellValue(‘D1’, ‘Position’);
        $sheet->setCellValue(‘E1’, ‘Address’);
        $pegawai = Employee::all();
        $cell = 2;
        foreach($pegawai as $row){
            $sheet->setCellValue(‘A’.$cell, $row->id);
            $sheet->setCellValue(‘B’.$cell, $row->name);
            $sheet->setCellValue(‘C’.$cell, $row->email);
            $sheet->setCellValue(‘D’.$cell, $row->position);
            $sheet->setCellValue(‘E’.$cell, $row->address);
            $cell++;
        }
        $writer = new Xlsx($spreadsheet);        
        header(‘Content-Type: application/vnd.ms-excel’);
        header(‘Content-Disposition: attachment;filename=”Jogjatech-export.xlsx”‘);
        $writer->save(‘php://output’);
    }

Step 10 Run Laravel Development Server

Finally, tahap akhir adalah melakukan tes project Laravel Report Excel with PhpSpreadsheet, untuk menjalankan laravel server development dapat kita lakukan melalui jendela Terminal/ Command Prompt, masih aktif pada root project laravel Anda, lalu jalankan laravel perintah artisan laravel server development seperti berikut :

php artisan serve

Setelah laravel server development berjalan, maka selanjutnya kita akses project laravel kita melalui web browser dengan mengetikkan url http://localhost:8000/spreadsheet, jika berjalan dengan baik maka akan ditampilkan halaman project laravel kita seperti berikut :

Laravel Export Excel with PhpSpreadsheet
Laravel Export Excel with PhpSpreadsheet, Photo: Jogjatech.com

Selanjutnya mari kita coba klik tombol export yang telah kita buat, jika berjalan dengan baik maka akan kita jumpai file export berupa file excel seperti berikut :

Laravel Report Excel with PhpSpreadsheet
Laravel Report Excel with PhpSpreadsheet, Photo: Jogjatech.com

Jika file excel tersebut kita buka maka akan ditampilkan data hasil export seperti berikut.

Laravel PhpSpreadsheet Export Excel
Laravel PhpSpreadsheet Export Excel, Photo: Jogjatech.com

LEAVE A REPLY

Please enter your comment!
Please enter your name here