Laravel | Excel (Add Heading) 🧱 - Part #3

Laravel | Excel (Add Heading) 🧱 - Part #3

Pada artikel seri sebelum ini kita sudah membahas bagaimana caranya mapping data dengan data pada kolom mana saja yang akan kita ambil. Tentu kita berhasil mendapatkannya, akan tetapi kita tidak tau itu data apa. Mari kita perjelas dengan memberi label berupa heading pada setiap kolomnya.

1. Daftarkan WithHeadings

Untuk memberikan heading pada kolom yang akan kita berikan, tentunya kita harus menambahkan sebuah interface yaitu WithHeadings ke class File Export.

Yang sebelumnya di file UsersExport seperti ini.

    <?php

    namespace App\Exports;

    use App\User;
    use Maatwebsite\Excel\Concerns\FromCollection;
    use Maatwebsite\Excel\Concerns\WithMapping;

    class UsersExport implements FromCollection, WithMapping
    {
        public function collection()
        {
            return User::all();
        }
    }

Maka kita tambahkan WithHeadings

    use Maatwebsite\Excel\Concerns\WithHeadings;

    class UsersExport implements FromCollection, WithHeadings

sehingga menjadi tampak seperti ini.

    <?php

    namespace App\Exports;

    use App\User;
    use Maatwebsite\Excel\Concerns\FromCollection;
    use Maatwebsite\Excel\Concerns\WithMapping;
    use Maatwebsite\Excel\Concerns\WithHeadings;

    class UsersExport implements FromCollection, WithMapping, WithHeadings
    {
        public function collection()
        {
            return User::all();
        }
    }

2. Gunakan function headings():array

Selanjutnya kita tambahkan function headings dengan tipe array ke dalam class UserExport.

    public function heading():array
    {
        return [
            //value dari heading yang akan kita berikan, usahakan sesuai dengan jumlah dan urutan pada mapping-data ya.
        ];
    }

Misal kita memiliki kolom name | email | address | phone, maka 4 field column itu akan kita beri heading yaitu Nama | Email | Alamat | No.HP, pastikan jumlahnya sama dengan kolom data yang kita ambil dan harus urut dengan column yang ada di table database, bila kita menggunakan mapping-data, maka harus urut dengan urutan data yang kita mapping.

Sehingga pada function heading akan tampak seperti ini.

    public function headings():array
    {
        return [
            //pastikan urut dan jumlahnya sesuai dengan yang ada di mapping-data atau table di database
            'Nama',
            'Email',
            'Alamat',
            'No.HP',
        ];
    }

Dan keseluruhan file UsersExport akan tampak seperti ini.

    <?php

    namespace App\Exports;

    use App\User;
    use Maatwebsite\Excel\Concerns\FromCollection;
    use Maatwebsite\Excel\Concerns\WithMapping;
    use Maatwebsite\Excel\Concerns\WithHeadings;

    class UsersExport implements FromCollection, WithMapping, WithHeadings
    {
        public function collection()
        {
            return User::all();
        }
        
        public function map($user):array
        {
            return [
                //data yang dari kolom tabel database yang akan diambil
                $user->name,
                $user->email,
                $user->address,
                $user->phone,
            ];
        }

        public function headings():array
        {
            return [
                //pastikan urut dan jumlahnya sesuai dengan yang ada di mapping-data atau table di database
                'Nama',
                'Email',
                'Alamat',
                'No.HP',
            ];
        }
    }

3. Jangan lupa kita uji

Selanjutnya yaitu kita uji. Akses route yang sudah didaftarkan, lihat hasil unduhan file excel nya, kemudian buka. Apakah berhasil? Jika Ya, berarti anda luarbiasa. Jika belum berhasil silahkan tanyakan via kolom komentar ya.

Selesai!
Next kita akan buat lebar dari kolomnya sesuai dengan value paling panjang. Biar nggak repot dan susah dibaca.

Playlist Artikel Laravel-Excel:

  1. Laravel | Excel (Quick start Export File)📁 - Part #1
  2. Laravel | Excel (Mapping Data) 🏷️ - Part #2
  3. Laravel | Excel (Add Heading) 🏷🧱 - Part #3
  4. Laravel | Excel (ShouldAutoSize) ⬅️➡️ - Part #4

See you on next article! 😇


Anda bisa mensupport saya melalui berikut :

  1. PayPal
  2. Saweria
  3. Trakteer
Tampilkan Komentar