• Contact Us
Jumat, Mei 26, 2023
-18 °c
Teman Ngoding
  • Home
  • Tutorial
    • Laravel
    • Codeigniter
    • PHP
    • Golang
    • Java
    • Javascript
    • React JS
    • SQL
    • Problem Solution
  • Video Tutorial
    • Video Laravel
    • Video Codeigniter
    • C++
    • Video Git
  • Events
  • Berita
  • Donate
  • Indonesia
    • English
No Result
View All Result
Teman Ngoding
  • Home
  • Tutorial
    • Laravel
    • Codeigniter
    • PHP
    • Golang
    • Java
    • Javascript
    • React JS
    • SQL
    • Problem Solution
  • Video Tutorial
    • Video Laravel
    • Video Codeigniter
    • C++
    • Video Git
  • Events
  • Berita
  • Donate
  • Indonesia
    • English
No Result
View All Result
Plugin Install : Cart Icon need WooCommerce plugin to be installed.
Teman Ngoding
No Result
View All Result

Tutorial Lengkap Export Excel Laravel

admin by admin
April 12, 2022
in Laravel, Tutorial
0 0
0
Home Tutorial Laravel

This post is also available in: English

Export Excel sering kita buat ketika kita membuat aplikasi, karena biasanya client ingin data sesuai dengan yang tersimpan di aplikasi.

Tujuan nya adalah agar data-data yang ada di system, dapat mereka olah kembali secara manual di Microsoft Excel..

Atau agar data tersebut dapat disimpan dan dikirim ke pihak lain.

Itulah mengapa pada setiap report sebetulnya wajib ada fitur untuk export data nya kedalam excel.

Kali ini saya hanya akan memberikan beberapa cara untuk membruat report menggunakan laravel.

Instalasi Package MaatWebsite Laravel Excel

composer require maatwebsite/excel

Setelah itu, kita perlu melakukan sedikit konfigurasi pada file “../config/app.php”

'providers' => [
    /*
     * Package Service Providers...
     */
    Maatwebsite\Excel\ExcelServiceProvider::class,
]
'aliases' => [
    ...
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
]
php artisan make:export SiswaExport --model=TblSiswa
<?php
namespace App\Exports;
use App\Models\TblSiswa;
use Maatwebsite\Excel\Concerns\FromCollection;
class SiswaExport implements FromCollection
{
    /**
    * @return \Illuminate\Support\Collection
    */
    public function collection()
    {
        return TblSiswa::all();
    }
}

Sekarang kita buatkan dulu file Controller nya, jalankan perintah:

php artisan make:controller ExportController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Exports\SiswaExport;
use Maatwebsite\Excel\Facades\Excel;
class ExportController extends Controller
{
    public function index()
    {
        return Excel::download(new SiswaExport, 'users.xlsx');
    }
}

Kalian buka file web.php, dan buat route baru seperti berikut:

....
Route::get('export-data', [ExportController::class, 'index']);
....

Filter Data Export Dengan Kondisi Where

Terkadang kita gak ingin semua data nya ter export, tapi hanya ingin beberapa data saja dengan kondisi tertentu.

Nah kita juga bisa menambahkan beberapa query sebelum melakukan proses export data nya, agar data yang ketarik bisa kita sesuaikan sesuai dengan kebutuhan.

Pertama kita modifikasi dulu pada file SiswaExport nya hingga menjadi seperti berikut.

<?php

namespace App\Exports;

use App\Models\TblSiswa;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\FromQuery;

class SiswaExport implements FromQuery
{
    /**
     * @return \Illuminate\Support\Collection
     */
    public function __construct(string $keyword)
    {
        $this->nama = $keyword;
    }

    public function query()
    {
        return TblSiswa::query()->where('nama', 'like', '%' . $this->nama . '%');
    }
}

Kemudian pada file ExportController nya kalian rubah juga seperti berikut:

public function index()
{
    return Excel::download(new SiswaExport('putri'), 'siswas.xls');
}

Export Data From View

Dari tadi kita melakukan export data belum ada Header nya, padahal Header ini sangat penting bagi user agar bisa dengan mudah membaca jenis kolom nya.

Untuk bisa memberikan header, kita perlu metode untuk export data berdasarkan file view, nanti dari view tersebut kita juga bisa mengubah urutan kolom nya.

Misalkan sebagai contoh kita ingin menghilangkan kolom ID, menggeser kolom nama menjadi paling sebelah kiri dan kolom alamat menjadi paling sebelah kanan.

Kita ubah file SiswaExport nya terlebih dahulu menjadi seperti berikut:

<?php

namespace App\Exports;

use App\Models\TblSiswa;

use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;

class SiswaExport implements FromView
{
    /**
     * @return \Illuminate\Support\Collection
     */
    public function __construct(string $keyword)
    {
        $this->nama = $keyword;
    }

    public function view(): View
    {
        return view('siswas.export', [
            'data' => TblSiswa::where('nama', 'like', '%' . $this->nama . '%')->get()
        ]);
    }
}

Sekarang berarti selanjutnya kamu buat view baru dengan nama export.blade.php dengan struktur seperti berikut:

<table>
    <thead>
        <tr>
            <th>Nama</th>
            <th>No HP</th>
            <th>Email</th>
            <th>Alamat</th>
        </tr>
    </thead>
    <tbody>
        @foreach ($data as $dt)
            <tr>
                <td>{{ $dt->nama }}</td>
                <td>{{ $dt->no_hp }}</td>
                <td>{{ $dt->email }}</td>
                <td>{{ $dt->alamat }}</td>
            </tr>
        @endforeach
    </tbody>
</table>

Export Data dengan Multiple Sheet

Sebagai contoh, kita akan membuat 2 buah sheet dalam 1 file, dimana sheet pertama untuk menampung nama siswa aja, dan sheet kedua untuk menampung no hp nya si siswa aja..

Kita perlu membuat folder baru bernama Sheets didalam “/app/Exports”, kemudian didalam nya buat 2 file baru yaitu SheetNama.php dan SheetNoHp.php.

../app/Exports/Sheets/SheetNama.php
../app/Exports/Sheets/SheetNoHp.php

SheetNama.php:

<?php

namespace App\Exports\Sheets;

use App\Models\TblSiswa;

use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithTitle;


class SheetNama implements FromQuery, WithTitle
{
    /**
     * @return \Illuminate\Support\Collection
     */
    private $nama;

    public function __construct(string $nama)
    {
        $this->nama = $nama;
    }

    /**
     * @return Builder
     */
    public function query()
    {
        return TblSiswa
            ::query()
            ->where('nama', 'like', '%' . $this->nama . '%')->select('nama');
    }

    /**
     * @return string
     */
    public function title(): string
    {
        return 'Nama';
    }
}

SheetNoHp.php:

<?php

namespace App\Exports\Sheets;

use App\Models\TblSiswa;

use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithTitle;

class SheetNoHp implements FromQuery, WithTitle
{
    /**
     * @return \Illuminate\Support\Collection
     */
    private $nama;

    public function __construct(string $nama)
    {
        $this->nama = $nama;
    }

    /**
     * @return Builder
     */
    public function query()
    {
        return TblSiswa
            ::query()
            ->where('nama', 'like', '%' . $this->nama . '%')->select('no_hp');
    }

    /**
     * @return string
     */
    public function title(): string
    {
        return 'No HP';
    }
}

Kemudian file SiswaExport.php nya juga perlu kamu rubah seperti berikut:

../app/Exports/SiswaExport.php
<?php

namespace App\Exports;

use Maatwebsite\Excel\Concerns\WithMultipleSheets;

use App\Exports\Sheets\SheetNama;
use App\Exports\Sheets\SheetNoHp;

class SiswaExport implements WithMultipleSheets
{
    /**
     * @return \Illuminate\Support\Collection
     */
    public function __construct(string $keyword)
    {
        $this->nama = $keyword;
    }

    public function sheets(): array
    {
        $sheets = [];

        $sheets[] = new SheetNama($this->nama);
        $sheets[] = new SheetNoHp($this->nama);

        return $sheets;
    }
}

Sekiar tutorial yang bisa saya sampaikan, semoga bermanfaat. Terimakasih

ShareTweetShare
admin

admin

Next Post
Kelas Daring – Sekolah Beta

Kelas Daring - Sekolah Beta

Tinggalkan Balasan Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

  • Trending
  • Comments
  • Latest
Tutorial CodeIgniter 4 part 1 ~ RESTful API JWT Authentication

Tutorial CodeIgniter 4 part 1 ~ RESTful API JWT Authentication

Juni 2, 2022
REST API Login dan Register Node.js dengan JWT

REST API Login dan Register Node.js dengan JWT

Juli 28, 2022
Tutorial Codeigniter 4 ~ Login dan Register

Tutorial Codeigniter 4 ~ Login dan Register

Mei 30, 2022
Codeigniter 4 ~ Membuat Notifikasi Menggunakan SweetAlert

Codeigniter 4 ~ Membuat Notifikasi Menggunakan SweetAlert

Juni 8, 2022
Tutorial Codeigniter 4 ~ Login dan Register

Tutorial Codeigniter 4 ~ Login dan Register

5
Rekomendasi tempat belajar pemrograman

Rekomendasi tempat belajar pemrograman

3
Menghilangkan Public dan Index.php dari URL Codeigniter 4

Menghilangkan Public dan Index.php dari URL Codeigniter 4

2
Migration Laravel

Migration Laravel

1
HTML Fundamentals – HTML Basic

HTML Fundamentals – HTML Basic

Mei 19, 2023
Pekerjaan Apa yang Akan Diganti oleh AI?

Pekerjaan Apa yang Akan Diganti oleh AI?

Mei 11, 2023
Programmer Atau Hacker?

Programmer Atau Hacker?

April 6, 2023
PENGENALAN BACKEND DEVELOPER

Pemrograman Backend Developer

April 5, 2023
Teman Ngoding

Teman Ngoding tempat berbagi tutorial pemrograman
Read more

Categories

  • Berita
  • C++
  • Codeigniter
  • Events
  • Flutter
  • Golang
  • Java
  • Javascript
  • Laravel
  • MongoDB
  • News
  • Node JS
  • Pemrograman
  • PHP
  • Problem Solution
  • React JS
  • SQL
  • Tutorial
  • TypeScript
  • TypeScript
  • Video Codeigniter
  • Video Git
  • Video Laravel
  • Video Tutorial

Tags

ajax belajar golang belajar reactjs blog browser seluler Cara mendapatkan Uang dari Blog codeigniter codeigniter 3 codeigniter 4 codeigniter4 embed html Error Handling flutter flutter vs react native golang golang dasar html html basic html dasar infinite scroll javascript javascript tutorial laravel laravel 8 laravel 9 laravel9 load more ajax mongodb nodejs pdf pemrograman ajax pemrograman golang pemrograman php reactjs reactjs tutorial reactjs vs react native rest api rest api codeigniter 4 tutorial codeigniter 4 tutorial golang tutorial javascript tutorial laravel tutorial laravel 8 tutorial nodejs tutorial reactjs

Recent News

HTML Fundamentals – HTML Basic

HTML Fundamentals – HTML Basic

Mei 19, 2023
Pekerjaan Apa yang Akan Diganti oleh AI?

Pekerjaan Apa yang Akan Diganti oleh AI?

Mei 11, 2023

© 2022 Teman Ngoding.

No Result
View All Result
  • Home
  • Tutorial
    • Laravel
    • Codeigniter
    • PHP
    • Golang
    • Java
    • Javascript
    • React JS
    • SQL
    • Problem Solution
  • Video Tutorial
    • Video Laravel
    • Video Codeigniter
    • C++
    • Video Git
  • Events
  • Berita
  • Donate
  • Indonesia
    • English

© 2022 Teman Ngoding.

Login to your account below

Forgotten Password?

Fill the forms bellow to register

All fields are required. Log In

Retrieve your password

Please enter your username or email address to reset your password.

Log In
  • English
  • Indonesia