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 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.

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 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 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 User6

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

Postingan terbaru

LIHAT SEMUA