Laravel File Export PHP Excel
Laravel File Export PHP Excel

Hello laravel lover’s, in this article i will show you a simple guide and easy of how to use library PHPExcel in laravel to create export excel file laravel. This article will guide you a simple step to create PHP Excel reporting in laravel 7 with library PHPExcel, this tutorial was testing and running up to PHP version PHP 7.3.x. So if you’r needs tutorial export php excel in laravel this tutorial is for you, so let’s scroll below.

Tutorial Membuat Export Laporan Dalam Format Excel Pada Laravel – Salah satu fitur penting dalam sebuah aplikasi adalah dengan tersedianya fitur export atau cetak laporan dalam format excel. Fitur ini sangat sering dibutuhkan dalam sebuah aplikasi, bahkan fitur export laporan dalam format excel adalah sebuah fitur cetak laporan yang harus dan wajib ada dalam sebuah aplikasi untuk kepentingan pelaporan data.

Oleh karena itu, dari alasan diatas maka pada kesempatan kali ini saya akan berbagi dengan Anda tentang cara bagaimana membuat fitur export excel atau cetak laporan dalam format excel pada framework Laravel. Dalam membuat tutorial export laporan excel disini saya menggunakan project Laravel 7 yang telah ada sebelumnya yang pernah saya bahas pada tutorial dengan judul “Step By Step Tutorial Laravel Lengkap Cara Membuat Aplikasi CRUD Dengan Laravel 7“, sehingga disini saya tidak menjelaskan secara rinci tahap-tahap membuat project Laravel. Bagi Anda yang ingin mengikuti pembuatan project Laravel dari tahap awal dimulai dari instalasi laravel dapat mengunjungi link tutorial disini.

Kemudian untuk kebutuhan contoh data pada tutorial ini saya juga menggunakan data dari table pegawai pada tutorial sebelumnya, sehingga dalam membuat tutorial fitur laporan dalam format excel dengan laravel disini saya tidak membahas ulang tentang bagaimana melakukan input data pada laravel akan tetapi sudah dibahas pada tutorial sebelumnya.

Export Excel Laravel

Disini saya menyuguhkan cara yang mudah untuk bisa membuat laporan excel dengan laravel, caranya cukup mudah saya menggunakan library PHPExcel, bagi Anda yang belum memiliki library PHPExcel untuk kebutuhan meng-generate laporan dalam bentuk format excel pada framework Laravel maka sebaiknya mendownloadnya terlebih dahulu di internet dengan mencari kata kunci PHPExcel.

Setalah berhasil mendownload library PHPExcel untuk kegunaan laporan cetak excel pada laravel, maka ikuti langkah-langkah selanjutnya sebagai berikut :

Langkah pertama, ekstrak file library PHPExcel, lalu copy dan pastekan file library PHPExcel tersebut pada folder public project Laravel, sehingga strukturnya dapat dilihat seperti berikut :

Langkah selanjutnya adalah mendefinisikan class PHPExcel pada controller “app\Http\Controllers\PegawaiController.php” sehingga menjadi seperti berikut :

Laravel Laporan Excel Class PHP Excel
Laravel Laporan Excel Class PHP Excel

Setelah class PHPExcel kita panggil pada controller diatas, maka langkah selanjutnya adalah menambahkan method export(), dimana method ini akan kita gunakan untuk kebutuhan pembuatan laporan dalam format excel pada laravel, tambahkan sebuah method export pada controller “app\Http\Controllers\PegawaiController.php” lalu tambahkan code berikut :

public function export()
    {       
        include ‘PHPExcel/PHPExcel.php’;                
        $object = new PHPExcel();
        $object->setActiveSheetIndex(0);        
        $kolom= [‘ID’,’Nama’,’Email’,’Pekerjaan’,’Alamat’];     
        $column = 0;
        foreach($kolom as $field)
        {           
            $object->getActiveSheet()->setCellValueByColumnAndRow($column, 1, $field);
            $column++;
        }         
        $cek = Pegawai::all()->toArray();
        $excel_row = 2;
        foreach ($cek as $row){
            $hasil= array_values($row);                  
            $kolom = sizeof($hasil);
            for($i=0;$i<$kolom;$i++){               
                $object->getActiveSheet()->setCellValueByColumnAndRow($i, $excel_row, $hasil[$i]);  
            }   
            $excel_row++;           
        }
                     
        $writer = PHPExcel_IOFactory::createWriter($object, ‘Excel2007’);
        header(‘Content-Type: application/vnd.ms-excel’);
        header(‘Content-Disposition: attachment;filename=”DataPegawaiPHPExcel_Jogjatech.xlsx”‘);
        $writer->save(‘php://output’);
    }

Nah setelah menambahkan potongan code kebutuhan export laporan excel dengan laravel pada controller diatas, maka langkah selanjutnya adalah kita lakukan modifikasi file blade pegawai pada folder “resources\views\pegawai.blade.php” dengan menambahkan tombol export excel seperti berikut :

Laravel Laporan Excel Button Export PHP Excel
Laravel Laporan Excel Button Export PHP Excel

Dan berikut adalah button export excel dengan laravel :

Setelah menambahkan tombol button export excel laravel diatas, maka selanjutnya saya menambahkan script berikut untuk menjalankan tombol laporan export excel dengan laravel, berikut adalah scriptnya :

<button class=”btn btn-info btn-sm btn-flat pull-right export”><i class=”fa fa-file”></i> Export Excel</button>

Oke, setelah semua langkah demi langkah diatas telah kita lakukan maka selanjutnya adalah melakukan uji fitur cetak export laporan excel dengan laravel pada tutorial disini dengan menjalankan perintah artisan server development laravel seperti berikut :

php artisan serve

Setelah server development project laravel berjalan, maka langkah selanjutnya adalah mengakses project laravel melalui web browser dengan menjalankan url localhost:8000/pegawai, jika semua berjalan dengan baik maka akan kita jumpai tombol export excel dengan laravel seperti berikut :

Laravel Laporan Export Excel Jogjatech
Laravel Laporan Export Excel Jogjatech

Dan jika tombol cetak export excel laravel tersebut kita klik maka akan meng-generate sebuah file excel dimana didalamnya memuat data-data pegawai yang diambil dari database MySQL tabel pegawai seperti berikut :

Laravel File Export PHP Excel
Laravel File Export PHP Excel

Dan jika file hasil export laporan excel tersebut kita buka maka akan ditampilkan laporan data pegawai dalam format excel dengan laravel seperti berikut :

Laravel Export Laporan PHP Excel
Laravel Export Laporan PHP Excel

Nah diatas adalah langkah simple dan sederhana dalam membuat fitur Export Laporan Dalam Format Excel Pada Laravel. Berikut saya lampirkan pula file controller dan file blade.

app\Http\Controllers\PegawaiController.php

<?php
namespace App\Http\Controllers;
//Jogjatech.com
use Illuminate\Http\Request;
use DB;
use App\Pegawai;
use Datatables; //pemanggilan datatable dalam sebuah controller
use PHPExcel; // library PHPexcel
use PHPExcel_IOFactory; // library PHPexcel
class PegawaiController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return view(‘pegawai’);
    }
    public function getData()
    {
        return Datatables::of(Pegawai::all())->make(true);
    }
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $data=array(
                ‘name’  => $request->input(‘name’),
                ’email’ => $request->post(’email’),
                ‘job’   => $request->post(‘job’),
                ‘address’=> $request->post(‘address’)
            );
        if($request->input(‘idpegawai’)==”){
            DB::table(‘pegawais’)->insert($data);
        }else{
            DB::table(‘pegawais’)->where(‘id’,’=’,$request->post(‘idpegawai’))->update($data);
        }        
        return redirect()->route(‘pegawai.index’);
    }
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit(Request $request)
    {
        $data = Pegawai::findOrFail($request->get(‘id’));
        echo json_encode($data);
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        DB::table(‘pegawais’)->where(‘id’, ‘=’, $id)->delete();
    }
    
    public function export()
    {       
        include ‘PHPExcel/PHPExcel.php’;                
        $object = new PHPExcel();
        $object->setActiveSheetIndex(0);        
        $kolom= [‘ID’,’Nama’,’Email’,’Pekerjaan’,’Alamat’];     
        $column = 0;
        foreach($kolom as $field)
        {           
            $object->getActiveSheet()->setCellValueByColumnAndRow($column, 1, $field);
            $column++;
        }         
        $cek = Pegawai::all()->toArray();
        $excel_row = 2;
        foreach ($cek as $row){
            $hasil= array_values($row);                  
            $kolom = sizeof($hasil);
            for($i=0;$i<$kolom;$i++){               
                $object->getActiveSheet()->setCellValueByColumnAndRow($i, $excel_row, $hasil[$i]);  
            }   
            $excel_row++;           
        }
                     
        $writer = PHPExcel_IOFactory::createWriter($object, ‘Excel2007’);
        header(‘Content-Type: application/vnd.ms-excel’);
        header(‘Content-Disposition: attachment;filename=”DataPegawaiPHPExcel_Jogjatech.xlsx”‘);
        $writer->save(‘php://output’);
    }
}

resources\views\pegawai.blade.php

@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 class=”btn btn-success btn-sm btn-flat pull-right” data-toggle=”modal” data-target=”#modal-add”><i class=”fa fa-plus”></i> Tambah</button>
                    <button class=”btn btn-info btn-sm btn-flat pull-right export”><i class=”fa fa-file”></i> Export Excel</button>
                </div>
                @if($message = Session::get(‘status’))
                <div class=”alert alert-success alert-dismissable”>
                    <button aria-hidden=”true” data-dismiss=”alert” class=”close” type=”button”>×</button>
                    <p>{{$message}}</p>
                </div>
                @endif
                <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>Job</th>
                            <th>Address</th>
                            <th>Action</th>
                        </tr>
                    </thead>
                    <tbody>  
                        
                    </tbody>
                </table>
                </div>
            </div>
        </div>
    </div>
</div>
<!– Modal –>
<div class=”modal fade” id=”modal-add” tabindex=”-1″ role=”dialog” aria-labelledby=”exampleModalLabel” aria-hidden=”true”>
  <div class=”modal-dialog” role=”document”>
    <div class=”modal-content”>
      <div class=”modal-header”>
        <h5 class=”modal-title” id=”exampleModalLabel”>Form Data Pegawai</h5>
        <button type=”button” class=”close” data-dismiss=”modal” aria-label=”Close”>
          <span aria-hidden=”true”>&times;</span>
        </button>
      </div>
      <form name=”frm_add” id=”frm_add” class=”form-horizontal” action=”{{route(‘pegawai.simpan’)}}” method=”POST” enctype=”multipart/form-data”> 
        @csrf
      <div class=”modal-body”>             
        <div class=”form-group”><label class=”col-lg-3 control-label”>Name</label>
            <div class=”col-lg-12″>
                <input type=”text” name=”name” placeholder=”Name” class=”form-control”>
            </div>
        </div>  
        <div class=”form-group”><label class=”col-lg-3 control-label”>Email</label>
            <div class=”col-lg-12″>
                <input type=”email” name=”email” placeholder=”Email” class=”form-control”>
            </div>
        </div> 
        <div class=”form-group”><label class=”col-lg-3 control-label”>Job</label>
            <div class=”col-lg-12″>
                <input type=”text” name=”job” placeholder=”Job” class=”form-control”>
            </div>
        </div> 
        <div class=”form-group”><label class=”col-lg-3 control-label”>Address</label>
            <div class=”col-lg-12″>
               <textarea name=”address” class=”form-control”></textarea>
            </div>
        </div>        
      </div>      
      <div class=”modal-footer”>      
        <input type=”hidden” name=”idpegawai”>  
        <button type=”button” class=”btn btn-secondary” data-dismiss=”modal”>Close</button>
        <button type=”submit” class=”btn btn-primary”>Simpan</button>
      </div>
      </form>
    </div>
  </div>
</div>
@endsection
@push(‘scripts’)
<script type=”text/javascript”>
$(document).ready(function () {
    $.ajaxSetup({headers: { ‘X-CSRF-TOKEN’: $(‘meta[name=”csrf-token”]’).attr(‘content’) }});
   $(‘#tbl_list’).DataTable({
       “aLengthMenu”: [
                [10, 25, 50, 100, 200, -1],
                [10, 25, 50, 100, 200, “All”]
            ],
        paging: true,
        processing: true,
        serverSide: true,
        ajax: ‘{{ url(‘pegawai/getdata’) }}’,
        type: “POST”,
        columns: [
            { data: ‘id’},
            { data: ‘name’},
            { data: ’email’},
            { data: ‘job’},
            { data: ‘address’},        
            { data: “id”,
                    render: function (data, type, row ) {
                        return ‘<button type=”button” class=”btn btn-xs btn-success edit” data-id=”‘+data+'”><small>Edit</small></button>’+
                                ‘<button type=”button” class=”btn btn-xs btn-danger hapus” id-hapus=”‘+data+'”><small>Hapus</small></button>’;
                    }, sClass: “text-center”, searchable: false
            }            
        ],  
              
        “drawCallback”: function(settings, json) {  
            $(‘.edit’).off(“click”).on(“click”,function() {              
               var cek = $(this).attr(‘data-id’);
               $.ajax({                     
                    url : “{{route(‘pegawai.edit’)}}?id=”+cek,
                    type: “GET”,
                    dataType: “JSON”,
                    success: function(data)
                    {                   
                        $(“#frm_add”).find(“input[name=idpegawai]”).val(data.id);
                        $(“#frm_add”).find(“input[name=name]”).val(data.name);
                        $(“#frm_add”).find(“input[name=email]”).val(data.email);
                        $(“#frm_add”).find(“input[name=job]”).val(data.job);
                        $(“#frm_add”).find(“textarea[name=address]”).val(data.address);
                        $(“#exampleModalLabel”).text(“Form Edit Pegawai”);
                        $(‘#modal-add’).modal(‘show’);                          
                    }
                }); 
            }); 
            $(‘.hapus’).off(“click”).on(“click”,function() {              
               var cek = $(this).attr(‘id-hapus’);               
               $.ajax({                   
                    url : “{{url(‘pegawai/hapus’)}}/”+cek,
                    type: “POST”,
                    success: function(data)
                    {   
                        window.location =”{{route(‘pegawai.index’)}}”;                          
                    }
                }); 
            });            
            //export PHPExcel
            $(‘.export’).off(“click”).on(“click”,function() {                   
                window.location =”{{route(‘exportExcel’)}}”;                       
            }); 
        },
    });
    
 });
</script>
@endpush
routes\web.php
<?php
use Illuminate\Support\Facades\Route;
/*
|————————————————————————–
| Web Routes
|————————————————————————–
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the “web” middleware group. Now create something great!
|
*/
Route::get(‘/’, function () {
    return view(‘welcome’);
});
Auth::routes();
Route::get(‘/home’, ‘HomeController@index’)->name(‘home’);
Route::get(‘/pegawai’, ‘PegawaiController@index’)->name(‘pegawai.index’);
Route::get(‘/pegawai/getdata’, ‘PegawaiController@getData’)->name(‘pegawai.getdata’);
Route::post(‘/pegawai/simpan’, ‘PegawaiController@store’)->name(‘pegawai.simpan’);
Route::get(‘/pegawai/edit’, ‘PegawaiController@edit’)->name(‘pegawai.edit’);
Route::post(‘/pegawai/hapus/{id}’, ‘PegawaiController@destroy’)->name(‘pegawai.hapus’);
Route::get(‘/pegawai/export’, ‘PegawaiController@export’)->name(‘exportExcel’);

Oke sampai disini berarti kita telah berhasil membuat fitur cetak export laporan excel dengan laravel menggunakan library PHPExcel, dalam membuat Tutorial Laravel 7 Export Laporan Dalam Format Excel Pada Laravel disini saya menggunakan PHP versi PHP 7.4, dan saat saya running project Laravel 7 cetak laporan excel ini tidak mengalami kendala dan berhasil. Akhir kata semoga tutorial laravel kali ini dapat memberi manfaat bagi siapa saja yang membutuhkan, dan terimakasih telah berkunjung di Jogjatech.com, happy coding 🙂

LEAVE A REPLY

Please enter your comment!
Please enter your name here