CodeIgniter 4 : Export Data Ke Excel

CodeIgniter 4 : Export Data Ke Excel

Sobatcoding.com - Export Excel CodeIgniter 4

Pada artikel kali ini akan membahas tentang export data ke excel di Codeigniter 4.

Export data pada sebuah aplikasi sangatlah penting. Kenapa? Karena hampir semua user aplikasi membutuhkan sebuah laporan dalam bentuk output excel, pdf ataupun csv. Laporan ini biasanya akan di print out dan diberikan kepada atasan untuk dianalisa lebih lanjut.

 

Ada beberapa library yang bisa digunakan oleh codeigniter untuk export data ke excel, anatara lain sebagai berikut:

  1. PHP Office
  2. Pear Excel Writer
  3. Php Export Data
  4. Spout

 

Pada kesempatan kali ini, admin akan menggunakan library Spout untuk export data ke excel. Kenapa admin menggunakan Spout sebagai pilihan?

Ada beberapa alasan mengapa admin menggunakan library Spout sebagai pilihan, antara lain:

  1. Spout mampu memproses file dari berbagai ukuran
  2. Spout hanya membutuhkan memori 3MB untuk memproses file apa pun.
  3. Mekanisme streaming Spout membuatnya sangat cepat .
  4. API Spout ramah pengembang .

 

Installasi Spout

Requirment untuk install library spout adalah sebagai berikut:

  • PHP version 7.2 or higher
  • PHP extension ext-zip enabled
  • PHP extension ext-xmlreader enabled

 

Ada dua cara untuk install library spout yaitu menggunakan composer atau secara manual. Installasi menggunakan composer lebih di rekomendasikan

Menggunakan Composer

Jalankan perintah berikut:

composer require box/spout

Tunggu hingga proses download selesai.

 

Manual Installation

  1. Download source code dari link berikut: https://github.com/box/spout/releases
  2. Extract file yang telah di download dan copy ke folder app\ThirdParty.
  3. Tambahkan kode ini paling atas di controller (contoh index.php).
    //sesuaikan dengan path folder library spout berada
    require_once '[PATH/TO]/src/Spout/Autoloader/autoload.php';‚Äč

 

Membuat Controller

Buatlah sebuah controller bernama Export.php dan masukkan kode seperti di bawah ini:

<?php

namespace App\Controllers;

use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
use Box\Spout\Writer\Common\Creator\Style\StyleBuilder;
use Box\Spout\Writer\Common\Creator\Style\BorderBuilder;
use Box\Spout\Common\Entity\Style\Color;
use Box\Spout\Common\Entity\Style\Border;
use Box\Spout\Common\Entity\Row;

class Export extends BaseController
{
	public function excel()
	{
        $headers = ["No", "Nama", "Alamat"];
        /**
         * Data Array yang akan di export
         */
        $array = [
            [1, "Adi Nugroho", "Jl. Merpati Indah No. 2"],
            [2, "Silvia Chayati", "Jl. Garuda No. 20"]
        ];


	$writer     = WriterEntityFactory::createXLSXWriter();
        /**
         * $fileName adalah nama file excel yang nantinya akan di export
         */
        $fileName   = "first-export-excel-spout.xlsx";
        $writer->openToBrowser($fileName);

        /** Tambahkan beberapa style menggunakan StyleBuilder */
        $border = (new BorderBuilder())
                    ->setBorderBottom(Color::BLACK, Border::WIDTH_THIN, Border::STYLE_SOLID)
                    ->setBorderTop(Color::BLACK, Border::WIDTH_THIN, Border::STYLE_SOLID)
                    ->setBorderLeft(Color::BLACK, Border::WIDTH_THIN, Border::STYLE_SOLID)
                    ->setBorderRight(Color::BLACK, Border::WIDTH_THIN, Border::STYLE_SOLID)
                    ->build();

        $styleHeader = (new StyleBuilder())
                    ->setFontBold()
                    ->setBackgroundColor(Color::rgb(222, 222, 222))
                    ->setBorder($border)
                    ->build();

        $style = (new StyleBuilder())
                    ->setBorder($border)
                    ->build();

        $rowFromValues = WriterEntityFactory::createRowFromArray($headers, $styleHeader);
        $writer->addRow($rowFromValues);

        
        foreach($array as $k=>$val)
        {
            $rowFromValues = WriterEntityFactory::createRowFromArray($val, $style);
            $writer->addRow($rowFromValues);
        }


        $writer->close();
	}

}

 

Perhatikan kode di atas.

Kita mempunyai sebuah variable bernama $headers dan $array.

Variable $headers berisi data header kolom yang berisi No, Nama dan Alamat.

Sedangkan variable $array berisi data array yang akan kita export nantinya.

 

Silahkan kalian akses URL http://localhost:8080/export/excel di browser masing-masing. Maka secara otomatis akan menghasilkan file excel yang bernama first-export-excel-spout.xlsx.

 

Sekian tutorial kali ini. Semoga bermanfaat.

Jika teman-teman memiliki pertanyaan atau saran mengenai artikel ini, jangan ragu untuk meninggalkan komentar pada form di bawah ini.