Fitur export ke dalam format excel itu merupakan salah satu fitur yang biasa terdapat pada program yang kita buat. Biasanya fitur ini digunakan dalam modul reporting atau pembuatan laporan. Meski program kita sudah bisa mencetak laporan langsung, adakalanya pengguna itu memerlukan laporan dalam format yang berbeda, misalnya dalam format excel maupun pdf. Untuk memenuhi kebutuhan tersebut, edisi tutorial CodeIgniter 4 ini akan membahas tentang membuat fitur export excel di framework CodeIgniter 4 menggunakan salah satu library yang sering digunakan untuk menghandle excel yaitu library PhpSpreadsheet.
PhpSpreadsheet ini adalah sebuah library yang ditulis menggunakan bahasa pemrograman PHP dan menyediakan beberapa class yang memudahkan kita untuk menulis dan membaca file spreasheet dalam format seperti excel dan LibreOffice Calc. Kawan, dalam tutorial ini kita akan coba class untuk menuliskan file excel. FYI, Selain format excel, ada beberapa format file yang disupport library ini. Untuk menulis, library ini mendukung format Open Document/OASIS (.ods), Office Open Xml (.xlsx) Excel 2007 ke atas, BIFF 8 (.xls) Excel 97 ke atas dan lain-lain. Karena di tutorial export to excel CodeIgniter sebelumnya itu tanpa library apapun dan tampaknya banyak yang tidak bisa buka file excel hasil generate dari codingannya, di tutorial ini saya mencoba menggunakan cara yang berbeda untuk membuat fitur export dalam format excel.
Web App Overview
Di tutorial CodeIgniter 4 edisi membuat fitur export excel menggunakan library PhpSpreadsheet ini kita akan membuat project sederhana. Ketika kita uji coba, project ini awalnya menampilkan sebuah halaman yang di dalamnya terdapat button untuk proses export ke format excel. Ketika button ini diklik, project akan memulai proses export ke excel dan meng-generate file excel sebagai outputnya.
Persiapan
Kawan, sebelum memulai, pastikan sudah terdapat project CodeIgniter 4 yang sudah terdapat sample data. Kalau belum ada, kawan-kawan boleh mengikuti tutorial sebelumnya untuk persiapan.
Task 1: Install library PHPSpreadSheet
Kawan, hal pertama yang akan kita lakukan adalah menginstall library. Seperti proses instalasi CodeIgniter 4, kita pakai composer untuk menginstall library PHPSpreadsheet. Buka terminal lalu run command ini ya..
Selanjutnya kita tunggu sampai proses instalasi selesai.
Task 2: Membuat fitur export ke excel
Library PhpSpreadsheet sudah kita install, langkah selanjutnya adalah membuat fitur export ke excel.
Kita buat dulu model class sesuai dengan sample data yang kita punya. Buat file baru dengan nama UsersModel.php di direktori app/Models/. Di dalam file UsersModel.php kita deklarasikan class model UsersModel.
<?php namespace App\Models; use CodeIgniter\Model; class UsersModel extends Model { protected $table = 'users'; }Setelah selesai, save kembali file UsersModel.php.
Selanjutnya kita buat controller yang akan menghandle proses export. Buat file baru dengan nama User.php. di direktori app/Controllers/. Kemudian kita deklarasikan class controller User.php di dalam file User.php.
Selanjutnya kita buat method baru untuk menghandle proses export ke excel.
<?php namespace App\Controllers; use App\Controllers\BaseController; use App\Models\UsersModel; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; class User extends BaseController { public function export() { $userModel = new UsersModel(); $users = $userModel->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'); } }Save kembali file User.php.
Kawan, pada tahapan ini kita sudah bisa melakukan proses export ke excel. Hanya saja kita mesti menuliskan urlnya langsung di address bar browser untuk mengaksesnya. Supaya lebih mudah untuk proses uji coba, kita buat user interfacenya.
Task 3: Membuat halaman untuk download hasil export
Buka kembali file controller User.php, kita tambahkan method index() untuk menampilkan halaman untuk export ke excel.
<?php namespace App\Controllers; use App\Controllers\BaseController; use App\Models\UsersModel; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; class User extends BaseController { public function index() { return view('index'); } // baris kode selanjutnya.. }Sehingga keseluruhan class controller User menjadi seperti berikut ini.
Uji Coba
Untuk uji coba, kita running dulu project kita. Buka terminal lalu run command berikut ini.
php spark serveSelanjutnya buka browser, ketik url di addressbar.
//localhost:8080/userProject kita akan menampilkan halaman yang berisi tulisan dan juga button untuk proses export ke excel. Selanjutnya kita klik button Export excel untuk memulai proses export ke excel.
Ya kita bisa lihat file excelnya bisa kita download.
Penutup
Di edisi tutorial kali ini kita sudah coba membuat fitur untuk export ke dalam format excel menggunakan library PhpSpreadsheet. Kita coba untuk menuliskan file excel menggunakan class Writer dari library PhpSpreadsheet, yaitu class PhpOffice\PhpSpreadsheet\Writer\Xlsx. Dan setelah proses uji coba, berbeda dengan tutorial sebelumnya, di tutorial kali ini kita sudah bisa menuliskan dan menggenerate file excel (untuk saat ini) tanpa ada kendala.
Meski sample code yang dicontohkan masih sederhana, semoga memudahkan kamu untuk memahami dasar pengembangan fitur yang menggunakan library. Semoga bermanfaat dan sampai jumpa di edisi tutorial berikutnya.