Pada tutorial kali ini kita akan membahas tentang bagaimana cara membuat export file excel dengan codeigniter, export disini bisa berbagai format seperti xls, csv dan pdf, dimana kita akan menggunakan library pihak ketiga yang sudah siap digunakan.
Fungsi export file dengan codeigniter ini sangat berguna bagi kita sebagai developer dalam membuat sebuah sistem berbasis web, karna fungsi export file excel adalah fitur yang wajib ada didalam sebuah sistem entah itu dalam modul laporan atau semacamnya tergantung kebutuhan sistem yang akan kita buat.
Didalam tutorial export file dengan codeigniter ini kita akan menggunakan PHPOffice/Spreadsheet sehingga ada tools yang mesti disediakan yaitu composer, fungsi composer ini untuk install PHPOffice/Spreadsheet karena kita tidak bisa hanya dengan mendownload filenya saja.
Membuat Export File Excel Dengan Codeigniter
Pertama-tama yang perlu kita siapkan adalah tentu saja framework codeigniter dan yang sudah dilakukan konfigurasi sesuai dengan konfigurasi server dan database pada step ke 2 dibawah ini.
Step 1: Install PHPOffice/PHPSpreadsheet
Pada step pertama buatlah folder dengan nama phpoffice di folder Documents atau dimana saja yang menurut anda mudah untuk di akses dengan syarat diluar folder codeigniter. Setelah itu masuk ke folder phpoffice yang tadi anda buat lalu buka CMD (Windows) atau Terminal (Linux/Mac) lalu masuk ke folder phpoffice tersebut kemudian jalankan perintah dibawah ini.
composer require phpoffice/phpspreadsheet
Jika berhasil maka di console anda akan terlihat seperti gambar dibawah ini.
Silakan cek folder phpoffice setelah dijalankan perintah install PHPOffice tersebut maka seharusnya akan ada sebuah folder dengan nama vendor didalam folder phpoffice tadi.
Selanjutnya pindahkan folder phpoffice tersebut kedalam folder codeigniter anda yaitu didalam folder /application/third_party.
Step 2: Menyiapkan database dan tabel beserta data sample
Pada step kedua ini kita akan membuat sebuah database dan tabel beserta data yang sudah saya siapkan, data tersebut akan kita gunakan sebagai contoh export excel, csv, maupun pdf.
Pertama buatlah sebuah database dengan nama pengguna seperti query dibawah ini.
CREATE DATABASE tutorial_export_codeigniter
Selanjutnya membuat tabel dengan nama pengguna.
CREATE TABLE pengguna( id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, nama VARCHAR(50) NOT NULL, umur INT(3) NOT NULL, tanggal_lahir DATETIME, jenis_kelamin VARCHAR(10) );
Dan yang terakhir memasukan data ke dalam tabel tersebut, berikut ini query data yang akan kita masukan.
INSERT INTO pengguna(nama, umur, tanggal_lahir, jenis_kelamin) VALUES ('Aris Munandar', 26, '1993-06-03 00:00:00', 'Lelaki'), ('Aditya', 26, '1993-06-03 00:00:00', 'Lelaki'), ('Budi Santoso', 26, '1993-06-03 00:00:00', 'Lelaki'), ('Ramdhoni', 26, '1993-06-03 00:00:00', 'Lelaki'), ('Ahmad', 26, '1993-06-03 00:00:00', 'Lelaki'), ('Iqbal Iskandar', 26, '1993-06-03 00:00:00', 'Lelaki'), ('Sofia', 26, '1993-06-03 00:00:00', 'Perempuan'), ('Azzahra', 26, '1993-06-03 00:00:00', 'Perempuan'), ('Tony Stark', 26, '1993-06-03 00:00:00', 'Lelaki'), ('Peter Parker', 26, '1993-06-03 00:00:00', 'Lelaki'), ('Jimmy Neutron', 26, '1993-06-03 00:00:00', 'Lelaki'), ('Rudy Tabootie', 26, '1993-06-03 00:00:00', 'Lelaki'), ('Hey Arnold', 26, '1993-06-03 00:00:00', 'Lelaki'), ('Gerald', 26, '1993-06-03 00:00:00', 'Lelaki'), ('Spongebob', 26, '1993-06-03 00:00:00', 'Lelaki');
Step 3: Membuat model untuk mengambil data dari database
Setelah database kita siapkan maka selanjutnya kita perlu membuat model codeigniter untuk mengambil data dari database yang tadi telah kita siapkan.
Buatlah sebuah file dengan nama Export_model.php didalam folder /application/models lalu masukan kode dibawah ini.
<?php defined('BASEPATH') OR die('No direct script access allowed');
class Export_model extends CI_Model {
   public function getAll()
   {
     $this->db->select('*');
     $this->db->from('pengguna');
     return $this->db->get();
   }
}
Code language: HTML, XML (xml)
Kode model diatas berfungsi untuk mengambil seluruh data yang ada didalam tabel pengguna, query tersebut sama dengan query sql seperti dibawah ini.
SELECT * FROM pengguna
Hanya saja kita dipermudah dengan dengan fitur Active Record yang ada di codeigniter.
Step 4: Membuat controller untuk menjalankan fungsi export
Selanjutnya kita akan membuat controller, dimana didalam controller ini akan menangani halaman index dan fungsi export yang akan kita gunakan.
Buatlah sebuah file dengan nama Export.php didalam folder /application/controllers lalu masukan kode dibawah ini.
<?php defined('BASEPATH') OR die('No direct script access allowed');
require('./application/third_party/phpoffice/vendor/autoload.php');
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
class Export extends CI_Controller {
   public function __construct()
   {
     parent::__construct();
     $this->load->model('export_model');
   }
   public function index()
   {
     $data['semua_pengguna'] = $this->export_model->getAll()->result();
     $this->load->view('export', $data);
   }
   public function export()
   {
     $semua_pengguna = $this->export_model->getAll()->result();
     $spreadsheet = new Spreadsheet;
     $spreadsheet->setActiveSheetIndex(0)
           ->setCellValue('A1', 'No')
           ->setCellValue('B1', 'Nama')
           ->setCellValue('C1', 'Jenis Kelamin')
           ->setCellValue('D1', 'Tanggal Lahir')
           ->setCellValue('E1', 'Umur');
     $kolom = 2;
     $nomor = 1;
     foreach($semua_pengguna as $pengguna) {
        $spreadsheet->setActiveSheetIndex(0)
             ->setCellValue('A' . $kolom, $nomor)
              ->setCellValue('B' . $kolom, $pengguna->nama)
              ->setCellValue('C' . $kolom, $pengguna->jenis_kelamin)
              ->setCellValue('D' . $kolom, date('j F Y', strtotime($pengguna->tanggal_lahir)))
              ->setCellValue('E' . $kolom, $pengguna->umur);
        $kolom++;
        $nomor++;
     }
     $writer = new Xlsx($spreadsheet);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="Latihan.xlsx"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
   }
}
Code language: HTML, XML (xml)
Jika sudah silakan simpan, kode diatas berguna untuk menangani halaman utama atau index, setelah itu pada method export akan sedikit saya jelaskan.
require('./application/third_party/phpoffice/vendor/autoload.php');
kode require()
ini digunakan untuk memanggil file autoload.php dimana didalamnya telah terdapat sebuah fungsi autoload yang berguna untuk memanggil semua yang dibutuhkan didalam library PHPOffice tanpa perlu kita memasukannya satu persatu.
Lalu beberapa keyword use
(penggunaan namespace) tersebut digunakan untuk memanggil library yang telah dipanggil didalam autoload pada PHPOffice tersebut.
setActiveSheetIndex(0)
fungsi ini digunakan untuk menentukan atau mengaktifkan Worksheet yang akan kita gunakan dimana Worksheet pertama dimulai dari 0 ya pak 😀
setCellValue(Posisi, Nilai)
sedangkan pada fungsi ini digunakan untuk menentukan kolom yang akan kita isi didalam file excel.
Step 5: Membuat tampilan tabel data
Selanjutnya kita akan membuat tampilan tabel, dimana isi tabel ini nantinya adalah seluruh data yang ada di database pengguna.
Caranya, buatlah sebuah file dengan nama export.php didalam folder /application/views lalu masukan kode dibawah ini.
<!DOCTYPE html>
<html>
<head>
   <title>Tutorial Export Dengan Codeigniter</title>
</head>
<body>
   <a href="<?php echo base_url('export'); ?>">Export Data</a>
   <table border="1" cellspacing="0">
<thead>
<tr>
<th style="width: 7%; text-align: center;">No</th>
<th style="width: 30%">Nama</th>
<th>Jenis Kelamin</th>
<th>Tanggal Lahir</th>
<th style="text-align: center;">Umur</th>
</tr>
</thead>
<tbody>
<?php $index = 1; ?>
<?php foreach($semua_pengguna as $pengguna): ?>
<tr>
<td style="width: 7%; text-align: center;"><?php echo $index++; ?></td>
<td style="width: 30%"><?php echo $pengguna->nama; ?></td>
<td><?php echo $pengguna->jenis_kelamin; ?></td>
<td><?php echo date('j F Y', strtotime($pengguna->tanggal_lahir)); ?></td>
<td style="text-align: center;"><?php echo $pengguna->umur; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</body>
</html>
Code language: HTML, XML (xml)
Pada halaman html diatas telah disesuaikan dengan yang ada di controller dan telah ditambahkan link export hanya saja kita perlu menyesuaikan route agar tampilan tersebut menjadi halaman utama latihan export ini.
Step 6: Konfigurasi route export file codeigniter
Selanjutnya ada step terakhir adalah membuat konfigurasi didalam route, dimana nantinya kita perlu merubah halaman Welcome codeigniter menjadi tampilan tabel data yang telah kita buat.
Buka file routes.php yang ada didalam folder /application/config lalu ubahlah kode dibawah ini.
$route['default_controller'] = 'welcome';
Code language: PHP (php)
Menjadi…
$route['default_controller'] = 'export';
$route['export'] = 'export/export';
Code language: PHP (php)
Pada kode diatas terlihat kita telah merubah halaman utama yang awalnya adalah tampilan Welcome codeigniter menjadi halaman export dan menambahkan route untuk fungsi export.
Pada step terakhir ini fungsi export telah selesai, silakan anda lakukan uji coba dengan membuka halaman utama latihan export anda, jika sudah benar maka seharusnya akan tampil seperti gambar dibawah ini.
Silakan klik link Export Data, jika berhasil maka akan secara otomatis melakukan download file excel dimana didalam file excel tersebut terdapat data-data yang ada didalam database pengguna.
Step 7: Tambahan latihan
Setelah berhasil melakukan export menggunakan file excel codeigniter dengan library PHPOffice/PHPSpreadsheet maka selanjutnya anda dapat melakukan pengembangan dengan memanfaatkan fitur-fitur format file yang disediakan oleh PhpSpreadsheet, berikut ini link untuk latihan merubah format export file dengan codeigniter.
https://phpspreadsheet.readthedocs.io/en/latest/topics/reading-and-writing-to-file/
Sekian dari saya semoga tutorial ini mudah dimengerti dan bermanfaat untuk proyek-proyek kerja menggunakan codeigniter.
Anggi Nuraziz