Cara menggunakan phpoffice/phpspreadsheet

Fitur export ke format excel merupakan salah satu fitur yang biasa terdapat pada program-program yang kita buat. Biasanya fitur ini digunakan pada modul pelaporan atau pembuatan laporan. Meskipun program kami dapat mencetak laporan secara langsung, terkadang pengguna membutuhkan laporan dalam format yang berbeda, misalnya dalam format excel atau pdf. Untuk memenuhi kebutuhan tersebut, tutorial CodeIgniter 4 edisi kali ini akan membahas pembuatan fitur export excel di framework CodeIgniter 4 menggunakan salah satu library yang sering digunakan untuk menangani export excel yaitu library PhpSpreadsheet

PhpSpreadsheet adalah library yang ditulis dengan menggunakan bahasa pemrograman PHP dan menyediakan beberapa kelas yang memudahkan kita untuk menulis dan membaca file spreadsheet dalam format seperti Excel dan LibreOffice Calc. Dalam tutorial ini kita akan mencoba kelas untuk menulis file excel

Selain format excel, ada beberapa format file yang didukung oleh library ini. Untuk penulisan, library ini mendukung format Open Document/OASIS (

3), Office Open Xml (
4) Excel 2007 ke atas, BIFF 8 (
5) Excel 97 ke atas dan lainnya. Karena pada tutorial CodeIgniter sebelumnya export to excel tanpa library dan sepertinya banyak yang tidak bisa membuka file excel yang dihasilkan dari coding, pada tutorial kali ini saya mencoba menggunakan cara yang berbeda untuk membuat fitur export dalam format excel

Ikhtisar Aplikasi Web

Kami membuat proyek studi kasus ini untuk fitur ekspor excel sederhana. Pada proyek ini hanya akan muncul halaman yang dilengkapi tombol untuk memulai proses export ke format excel dengan menggunakan library PhpSpreadsheet

Alur prosesnya cukup sederhana, ketika kita uji atau jalankan di browser, halaman awal muncul, lalu kita klik tombol yang ada dan setelah itu ada proses ekspor excel dan terakhir outputnya, kita unduh file ekspor ke format excel

Keluaran dari proyek sederhana ini berupa file dalam format excel

Persiapan

Untuk proses export data tentunya kita perlu memiliki data terlebih dahulu. Untuk itu kita akan mencoba memanfaatkan hasil dari tutorial sebelumnya tentang generate data dummy menggunakan database seeder

Bagi sobat yang sudah menyelesaikan projectnya bisa langsung mengikuti tutorial export excel ini. Dan bagi yang belum punya hasil projectnya, bisa ikuti tutorial sebelumnya untuk persiapan

Langkah 1 - Instal pustaka PHPSpreadSheet

Teman-teman, hal pertama yang akan kita lakukan adalah menginstal perpustakaan. Seperti proses instalasi CodeIgniter 4, kita menggunakan composer untuk menginstal library PHPSpreadsheet. Buka terminal dan jalankan

_6 ini ya

composer require phpoffice/phpspreadsheet
_

Kemudian kita tunggu sampai proses instalasi selesai

Langkah 2 - Buat fitur ekspor ke excel

Kita telah menginstal library PhpSpreadsheet, langkah selanjutnya adalah membuat fitur export ke excel

Pertama-tama kita membuat model kelas sesuai dengan data sampel yang kita miliki. Buat file baru dengan nama

_7 di direktori 
8. Dalam file 
_7 kami mendeklarasikan kelas model 
php spark make:controller User
0

Setelah selesai, simpan file

_7

Selanjutnya kita membuat controller yang akan menangani proses export. Buka terminal lagi, lalu kita generate controller menggunakan perintah

php spark make:controller User
2

php spark make:controller User
_

Buka file yang baru kita generate menggunakan

php spark make:controller User
_2 yaitu file
php spark make:controller User
4. dalam direktori
php spark make:controller User
_5. Kemudian kami memodifikasi pengontrol kelas
php spark make:controller User
_6 di file
php spark make:controller User
4. Pertama-tama kita mengimpor pustaka yang akan kita gunakan menggunakan pernyataan
php spark make:controller User
8

Selanjutnya kita membuat metode baru untuk menangani proses ekspor ke excel.

findAll();

        $spreadsheet = new Spreadsheet();

        $spreadsheet->setActiveSheetIndex(0)
            ->setCellValue('A1', 'Nama')
            ->setCellValue('B1', 'Email')
            ->setCellValue('C1', 'Tanggal dibuat');

        $column = 2;

        foreach ($users as $user) {
            $spreadsheet->setActiveSheetIndex(0)
                ->setCellValue('A' . $column, $user['name'])
                ->setCellValue('B' . $column, $user['email'])
                ->setCellValue('C' . $column, $user['created_at']);

            $column++;
        }

        $writer = new Xlsx($spreadsheet);
        $filename = date('Y-m-d-His'). '-Data-User';

        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename=' . $filename . '.xlsx');
        header('Cache-Control: max-age=0');

        $writer->save('php://output');
    }
}

Simpan file lagi

php spark make:controller User
_4

Pada tahap ini kita sudah bisa melakukan proses export ke excel. Hanya saja kita harus menuliskan url langsung di address bar browser untuk mengaksesnya. Untuk mempermudah proses pengujian, kami membuat antarmuka pengguna

Langkah 3 - Buat halaman untuk mengunduh hasil ekspor

Buka kembali pengontrol file

php spark make:controller User
_4, kami menambahkan metode
1 untuk menampilkan halaman untuk diekspor ke excel

Sampai seluruh class controller

php spark make:controller User
6 menjadi seperti berikut.

findAll();

        $spreadsheet = new Spreadsheet();

        $spreadsheet->setActiveSheetIndex(0)
            ->setCellValue('A1', 'Nama')
            ->setCellValue('B1', 'Email')
            ->setCellValue('C1', 'Tanggal dibuat');

        $column = 2;

        foreach ($users as $user) {
            $spreadsheet->setActiveSheetIndex(0)
                ->setCellValue('A' . $column, $user['name'])
                ->setCellValue('B' . $column, $user['email'])
                ->setCellValue('C' . $column, $user['created_at']);

            $column++;
        }

        $writer = new Xlsx($spreadsheet);
        $filename = date('Y-m-d-His'). '-Data-User';

        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename=' . $filename . '.xlsx');
        header('Cache-Control: max-age=0');

        $writer->save('php://output');
    }
}

Selanjutnya kita buat file view

_3 di dalam folder 
4, kemudian kita tambahkan baris kode berikut

  
  

  
      
      
      
    Tutorial CodeIgniter 4 Export excel menggunakan PhpSpreadsheet at qadrLabs  
  

  

Tutorial CodeIgniter 4 Export excel menggunakan PhpSpreadsheet at qadrLabs

Export Excel

Seperti yang terlihat pada baris kode di atas, tampilannya cukup sederhana. Halaman ini hanya menampilkan header dan tombol untuk memulai proses Ekspor ke format excel

Langkah 4 - Tentukan rute

Setelah pembaruan baru, codeigniter 4 secara default menonaktifkan

5 dan sebenarnya ini adalah praktik terbaik. Nah sekarang kita coba tambahkan route baru untuk halaman index dan proses export ke format excel. Buka file 
_6, lalu cari kode berikut

$routes->get('/', 'Home::index');

Kami memodifikasinya sehingga halaman untuk ekspor ditampilkan untuk pertama kali saat proyek kami dijalankan

$routes->get('/', 'User::index');

Selanjutnya kita tambahkan route untuk proses export

0

Ya, kami menunjuk ke metode

_7 yang ada di kelas 
php spark make:controller User
6

Cobalah

Untuk pengujian, kami menjalankan proyek kami terlebih dahulu. Kami membuka terminal dan menjalankan

6 berikut

_1

Kemudian buka browser, ketik url di address bar

_2

Proyek kami akan menampilkan halaman yang berisi teks dan juga tombol untuk proses ekspor ke excel. Selanjutnya kita klik tombol

findAll();

        $spreadsheet = new Spreadsheet();

        $spreadsheet->setActiveSheetIndex(0)
            ->setCellValue('A1', 'Nama')
            ->setCellValue('B1', 'Email')
            ->setCellValue('C1', 'Tanggal dibuat');

        $column = 2;

        foreach ($users as $user) {
            $spreadsheet->setActiveSheetIndex(0)
                ->setCellValue('A' . $column, $user['name'])
                ->setCellValue('B' . $column, $user['email'])
                ->setCellValue('C' . $column, $user['created_at']);

            $column++;
        }

        $writer = new Xlsx($spreadsheet);
        $filename = date('Y-m-d-His'). '-Data-User';

        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename=' . $filename . '.xlsx');
        header('Cache-Control: max-age=0');

        $writer->save('php://output');
    }
}
0 untuk memulai proses export ke excel

Ya, kita bisa melihat file excelnya dan kita bisa mendownloadnya

Penutupan

Pada tutorial edisi kali ini, kami mencoba membuat fitur untuk mengekspor ke format excel menggunakan library PhpSpreadsheet. Kami mencoba menulis file excel menggunakan class

findAll();

        $spreadsheet = new Spreadsheet();

        $spreadsheet->setActiveSheetIndex(0)
            ->setCellValue('A1', 'Nama')
            ->setCellValue('B1', 'Email')
            ->setCellValue('C1', 'Tanggal dibuat');

        $column = 2;

        foreach ($users as $user) {
            $spreadsheet->setActiveSheetIndex(0)
                ->setCellValue('A' . $column, $user['name'])
                ->setCellValue('B' . $column, $user['email'])
                ->setCellValue('C' . $column, $user['created_at']);

            $column++;
        }

        $writer = new Xlsx($spreadsheet);
        $filename = date('Y-m-d-His'). '-Data-User';

        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename=' . $filename . '.xlsx');
        header('Cache-Control: max-age=0');

        $writer->save('php://output');
    }
}
1 dari library PhpSpreadsheet, yaitu class
findAll();

        $spreadsheet = new Spreadsheet();

        $spreadsheet->setActiveSheetIndex(0)
            ->setCellValue('A1', 'Nama')
            ->setCellValue('B1', 'Email')
            ->setCellValue('C1', 'Tanggal dibuat');

        $column = 2;

        foreach ($users as $user) {
            $spreadsheet->setActiveSheetIndex(0)
                ->setCellValue('A' . $column, $user['name'])
                ->setCellValue('B' . $column, $user['email'])
                ->setCellValue('C' . $column, $user['created_at']);

            $column++;
        }

        $writer = new Xlsx($spreadsheet);
        $filename = date('Y-m-d-His'). '-Data-User';

        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename=' . $filename . '.xlsx');
        header('Cache-Control: max-age=0');

        $writer->save('php://output');
    }
}
2. Dan setelah melalui proses trial, berbeda dengan tutorial sebelumnya, pada tutorial kali ini kita bisa menulis dan generate file excel (untuk saat ini) tanpa kendala apapun.

Walaupun contoh kode yang ditampilkan masih sederhana, semoga akan memudahkan Anda memahami dasar-dasar pengembangan fitur yang menggunakan library. Semoga bermanfaat dan sampai jumpa di tutorial edisi berikutnya