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 User0
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 User2
php spark make:controller User_Buka file yang baru kita generate menggunakan php spark make:controller User_2 yaitu file php spark make:controller User4. 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 User4. Pertama-tama kita mengimpor pustaka yang akan kita gunakan menggunakan pernyataan php spark make:controller User8
Selanjutnya kita membuat metode baru untuk menangani proses ekspor ke excel.
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 User6 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 qadrLabsTutorial CodeIgniter 4 Export excel menggunakan PhpSpreadsheet at qadrLabs
Export ExcelSeperti 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
Selanjutnya kita tambahkan route untuk proses export
0Ya, kami menunjuk ke metode _7 yang ada di kelas php spark make:controller User6
Cobalah
Untuk pengujian, kami menjalankan proyek kami terlebih dahulu. Kami membuka terminal dan menjalankan 6 berikut
_1Kemudian buka browser, ketik url di address bar
_2Proyek 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