Export Excel Set Custom Hyperlink Di column- Laravel Excel

Ada kalanya report yang selalu dibutuhkan sangat komplek dalam sebuah aplikasi, contoh kasus yang saya alami dimana export excel tapi data export excel itu sudah di custom beberapa column contohnya disini dicustom tapi memang ingin menampilkan sebuah data link yang dimana link tersebut harus berbentuk hyperlink di excell. Contoh terlampi adalah contoh datanya.

 

Lalu saya coba mencari bagaimana cara solving masalah ini, dan seperti biasa ketemu di Github adapun linknya, https://github.com/SpartnerNL/Laravel-Excel/issues/926 

Adapun penjelasan dari yang tertera di link bahwa bisa menggunakan Event sebelum export menjadi excel, saya menggunakan library dan laravel 

- Package = "maatwebsite/excel": "~3.0"

- Laravel = 5.6.40

Di sini untuk contoh kasusnya yaitu column AF yang akan kita set menjadi Hyperlink, Adapun contoh kodingannya adalah sebagai berikut :

<?php

namespace App\Exports;

use Excel;
use Maatwebsite\Excel\Sheet;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;
use PhpOffice\PhpSpreadsheet\Cell\Hyperlink;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;

class SampleExport implements FromView, WithEvents
{
    protected $data;

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

    public function view(): View
    {
        return view('excel.sample',['data' => $this->data]);
    }

    public function registerEvents(): array
    {
        return [
            AfterSheet::class    => function(AfterSheet $event) {
                /** @var Worksheet $sheet */
                foreach ($event->sheet->getColumnIterator('AF') as $row) {
                    foreach ($row->getCellIterator() as $cell) {
                        if (str_contains($cell->getValue(), '://')) {
                            $cell->setHyperlink(new Hyperlink($cell->getValue(), 'Read'));

                             // Upd: Link styling added
                             $event->sheet->getStyle($cell->getCoordinate())->applyFromArray([
                                'font' => [
                                    'color' => ['rgb' => '0000FF'],
                                    'underline' => 'single'
                                ]
                            ]);
                        }
                    }
                }
            },
        ];
    }
}

Di atas adalah sample Class Exportnya, nah untuk memanggil fungsinya simple teman - teman. Kalian bisa panggil fungsinya di Contoller biar data excel nya ke Download contoh pemanggilan fungsinya.

$data['sample_export'] = "Ini sample Export Hyperlink";
$export = new SampeExport($data);
return Excel::download($export, 'sample_export' . date('Ymd') . '.xlsx');

Demikian artikel pendek tentang bagaimana cara set hyperlink pada export excel laravel, semoga bermanfaat ya.

 

 

Related Articles

Comments