Re:Code -"Bagaimana ya caranya export data ke dalam format excel menggunakan PHP?". Itulah yang saya pikirkan sewaktu mengerjakan tugas membuat program di UTS yang lalu. Ya, dalam pengembangan program itu ada kemungkinan adanya kebutuhan untuk membuat laporan / report ke dalam format tertentu. Misalnya ke dalam format pdf atau Excel. Nah, kebetulan program yang saya kembangkan perlu adanya fitur export data ke dalam format excel dan karena saya menggunakan framework CodeIgniter, jadi di edisi tutorial kali ini kita akan membahas tentang cara membuat export to excel pada framework CodeIgniter.
Di dalam pengembangan program, kebutuhan modul reporting atau pembuatan laporan ini memang hal yang lumrah. Bagian reporting ini dibutuhkan untuk pengolahan data menjadi informasi berbentuk laporan. Adakalanya laporan ini tidak hanya langsung dicetak, tapi diperlukan untuk hal diolah kembali. Nah, biasanya salah satu format yang sering digunakan itu adalah format excel.
Sebetulnya dalam export data ke Excel menggunakan PHP itu terdapat beberapa cara, di antaranya menggunakan Library seperti PHPExcel dan Spreadsheet Excel Writer. Nah, cara yang saya gunakan di edisi tutorial CodeIgniter kali ini sangat sederhana. Dan seperti biasa, kita akan membuat projek sederhana Export to excel CodeIgniter. Lalu apa saja langkah-langkahnya? Try this out ya!
Tutorial CodeIgniter : Membuat Export To Excel CodeIgniter
[1] Persiapan
Ya, di bawah ini adalah spesifikasi yang saya gunakan di tutorial Export to excel CodeIgniter:[a] XAMPP versi 5.6.21 (Apache, PHP 5.6.21, dan MariaDB).
[b] CodeIgniter versi 3.1.2
Sekarang kita persiapkan dulu folder untuk project tutorial CodeIgniter kali ini. Saya asumsikan kamu sudah mengunduh framework CodeIgniter. Unzip/ekstrak framework CodeIgniter yang sudah kamu unduh, lalu pindahkan folder CodeIgniter (hasil unzip/ekstrak) ke direktori C:\xampp\htdocs\. Kemudian, rename menjadi 'latihan_ci3'.
[baca: Tutorial dasar CodeIgniter untuk Pemula]
[2] Membuat Database
Langkah selanjutnya adalah membuat database. Seperti biasa, kita akan membuat database menggunakan phpMyAdmin yang sudah tersedia dalam paket Xampp. Sekarang buka browser kesayanganmu, lalu ketik alamat http://localhost/phpmyadmin/. Setelah muncul halaman phpMyAdmin, kita buat database dengan nama 'recodeku_db'.Langkah berikutnya adalah membuat tabel di dalam database yang sudah kita buat. Klik menu SQL pada phpMyAdmin. Lalu kamu ketik perintah SQL di bawah ini. Iya, iya, langsung dicopy-paste juga boleh kok. Hihi.
-- --------------------------------------------------------
--
-- Table structure for table `tbl_buku`
--
CREATE TABLE `tbl_buku` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`judul` varchar(100) NOT NULL,
`penulis` varchar(30) NOT NULL,
`isbn` varchar(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Dumping data for table `tbl_buku`
--
INSERT INTO `tbl_buku` (`id`, `judul`, `penulis`, `isbn`) VALUES
(1, 'Learning PHP, MySQL & JavaScript', 'Robin Nixon', 'ISBN-13: 978-1491918661'),
(2, 'PHP and MySQL for Dynamic Web Sites', 'Larry Ullman', 'ISBN-13: 978-0321784070'),
(3, 'PHP Cookbook', 'David Sklar', 'ISBN-13: 978-1449363758'),
(4, 'Programming PHP', 'Kevin Tatroe', 'ISBN-13: 978-1449392772'),
(5, 'Modern PHP: New Features and Good Practices', 'Josh Lockhart', 'ISBN-13: 978-1491905012'),
(6, 'Modern PHP New Features and Good Practices', 'Josh Lockhart', 'ISBN-13: 978-1491905012'),
(7, 'Learning PHP MySQL & JavaScript', 'Robin Nixon', 'ISBN-13: 978-1491918661'),
(8, 'PHP and MySQL for Dynamic Web Sites', 'Larry Ullman', 'ISBN-13: 978-0321784070'),
(9, 'PHP Cookbook', 'David Sklar', 'ISBN-13: 978-1449363758'),
(10, 'Programming PHP', 'Kevin Tatroe', 'ISBN-13: 978-1449392772'),
(11, 'Modern PHP New Features and Good Practices', 'Josh Lockhart', 'ISBN-13: 978-1491905012'),
(12, 'Learning PHP MySQL & JavaScript', 'Robin Nixon', 'ISBN-13: 978-1491918661'),
(13, 'PHP and MySQL for Dynamic Web Sites', 'Larry Ullman', 'ISBN-13: 978-0321784070'),
(14, 'PHP Cookbook', 'David Sklar', 'ISBN-13: 978-1449363758'),
(15, 'Programming PHP', 'Kevin Tatroe', 'ISBN-13: 978-1449392772'),
(16, 'Modern PHP New Features and Good Practices', 'Josh Lockhart', 'ISBN-13: 978-1491905012'),
(17, 'Learning PHP MySQL & JavaScript', 'Robin Nixon', 'ISBN-13: 978-1491918661'),
(18, 'PHP and MySQL for Dynamic Web Sites', 'Larry Ullman', 'ISBN-13: 978-0321784070'),
(19, 'PHP Cookbook', 'David Sklar', 'ISBN-13: 978-1449363758'),
(20, 'Programming PHP', 'Kevin Tatroe', 'ISBN-13: 978-1449392772');
Sudah?
Kalau sudah, kamu klik tombol 'Go' untuk menjalankan perintah SQL di atas.
Setelah perintah SQL dieksekusi, kita bisa melihat tbl_buku dan juga sampel data di database yang kita buat.
[3] Konfigurasi Database dan Base Url
Langkah berikutnya adalah mengatur konfigurasi database dan base url. Buka file database.php yang ada di direktori latihan_ci3/application/config/ dengan teks editor kesayanganmu. Cek line 76, lalu atur konfigurasi database. Berikut ini adalah konfigurasi databasenya. $db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'recodeku_db',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
Secara default, username itu root dan passwordnya kosong. Nah, kalau database kamu menggunakan password, jangan lupa isi passwordnya juga ya. Simpan kembali file database.php dengan menekan Ctrl+s.
Selanjutnya buka file config.php masih di direktori sama (latihan_ci3/application/config/). Cek line 26, lalu ubah
$config['base_url'] = '';
Menjadi :
$config['base_url'] = 'http://localhost/latihan_ci3/';
Lalu, cek line 38. Hapus index.php yang ada dalam tanda kutip. Bisa kamu lihat di gambar di bawah.
Tekan Ctrl+s untuk menyimpan kembali file config.php.
[4] Membuat file .htaccess
File .htaccess ini kita gunakan untuk mempercantik url dengan menghilangkan index.php pada url.[Baca: tentang htaccess]Sekarang buka teks editor kesayanganmu, buat file baru dengan nama '.htaccess', lalu ketik kode di bawah ini:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Simpan file .htaccess di folder project, yaitu folder latihan_ci3.
[5] Membuat Model (Model_buku.php)
Sekarang kita akan membuat file model dengan nama 'Model_buku.php'. Nah, di dalam file model ini terdapat class Model_buku dengan method getAll() yang berfungsi untuk mengambil data dari 'tbl_buku'. Yuk, sekarang buka text editor kesayangan, lalu ketik kode di bawah ini: <?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Model_buku extends CI_Model {
//constructor untuk class Model_buku
public function __construct(){
//load constructor CI_Model
parent::__construct();
//load database
$this->load->database();
}
// ambil data dari tabel 'tbl_buku'
public function getAll() {
$this->db->select('*');
$this->db->from('tbl_buku');
$query = $this->db->get();
return $query->result();
}
}
/* End of file Model_buku.php */
/* Location: ./application/models/Model_buku.php */
Setelah selesai diketik, simpan dengan nama Model_buku.php di direktori latihan_ci3/application/models.
[6] Membuat View (vw_excel.php dan vw_laporan_excel.php)
Kita buat dua file view yang akan kita gunakan dalam project tutorial kali ini. Pertama kita buat file view dengan nama vw_excel.php, buka text editor kesayanganmu, lalu ketik kode di bawah ini ya... <?php
defined('BASEPATH') OR exit('No direct script access allowed');
?><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title><?php echo $title ?></title>
<style>
::selection { background-color: #E13300; color: white; }
::-moz-selection { background-color: #E13300; color: white; }
body {
background-color: #fff;
margin: 40px;
font: 13px/20px normal Helvetica, Arial, sans-serif;
color: #4F5155;
}
main {
width: 80%;
padding: 20px;
background-color: white;
min-height: 300px;
border-radius: 5px;
margin: 30px auto;
box-shadow: 0 0 8px #D0D0D0;
}
table {
border-top: solid thin #000;
border-collapse: collapse;
}
th, td {
border-top: border-top: solid thin #000;
padding: 6px 12px;
}
a {
color: #003399;
background-color: transparent;
font-weight: normal;
}
</style>
</head>
<body>
<main>
<h1>Laporan Excel</h1>
<p><a href="<?php echo base_url('c_excel/export_excel') ?>">Export ke Excel</a></p>
<table border="1" width="100%">
<thead>
<tr>
<th>Judul</th>
<th>Penulis</th>
<th>ISBN</th>
</tr>
</thead>
<tbody>
<?php $i=1; foreach($buku as $buku) { ?>
<tr>
<td><?php echo $buku->judul; ?></td>
<td><?php echo $buku->penulis; ?></td>
<td><?php echo $buku->isbn; ?></td>
</tr>
<?php $i++; } ?>
</tbody>
</table>
</main>
</body>
</html>
Iya, kita simpan file vw_excel.php di direktori latihan_ci3/application/views.
Sekarang kita buat file view yang kedua dengan nama vw_laporan_excel.php. Yuk kita ketik lagi kode di bawah ini...
<?php
header("Content-type: application/vnd-ms-excel");
header("Content-Disposition: attachment; filename=$title.xls");
header("Pragma: no-cache");
header("Expires: 0");
?>
<table border="1" width="100%">
<thead>
<tr>
<th>Judul</th>
<th>Penulis</th>
<th>ISBN</th>
</tr>
</thead>
<tbody>
<?php $i=1; foreach($buku as $buku) { ?>
<tr>
<td><?php echo $buku->judul; ?></td>
<td><?php echo $buku->penulis; ?></td>
<td><?php echo $buku->isbn; ?></td>
</tr>
<?php $i++; } ?>
</tbody>
</table>
Simpan file vw_laporan_excel.php di direktori latihan_ci3/application/views.
Ya, bisa kita lihat di gambar. Kita sudah buat dua file views.
[7] Membuat Controller (C_excel.php)
Ya, terakhir kita buat file Controller dengan nama C_excel.php. Di dalam file ini terdapat class C_excel yang memiliki dua buah method yaitu index() dan export_excel(). Method index() digunakan untuk menampilkan tabel yang berisi data yang diambil dari database. Method kedua, yaitu method export_excel() digunakan untuk mengeksport ke dalam format excel.Sekarang kita buka lagi text editor kesayangan, lalu ketik kode di bawah ini yaa..
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class C_excel extends CI_Controller {
//constructor class C_excel
public function __construct() {
parent::__construct();
//load helper url
$this->load->helper('url');
//load model 'model_buku'
$this->load->model('model_buku');
}
//halaman awal untuk menampilkan tabel
public function index() {
$data = array( 'title' => 'Data Buku | Tutorial Export ke excel CodeIgniter @ https://recodeku.blogspot.com',
'buku' => $this->model_buku->getAll());
$this->load->view('vw_excel',$data);
}
//export ke dalam format excel
public function export_excel(){
$data = array( 'title' => 'Laporan Excel | Tutorial Export ke excel CodeIgniter @ https://recodeku.blogspot.com',
'buku' => $this->model_buku->getAll());
$this->load->view('vw_laporan_excel',$data);
}
}
/* End of file C_excel.php */
/* Location: ./application/controllers/C_excel.php */
Kalau codenya sudah diketik, simpan file controller C_excel.php di direktori latihan_ci3/application/controllers/.
Ok, jadi kita sudah buat beberapa file, yaitu file model (Model_buku.php), dua file view(vw_excel.php dan vw_laporan_excel.php), file controller (C_excel.php) dan file .htaccess.
[8] Uji Coba Project
Nah kawan.. Sekarang waktunya kita coba run project export to Excel CodeIgniter. Kita buka browser kesayangan, lalu kita ketik alamat: http://localhost/latihan_ci3/c_excel, voila~ ..tampil halaman vw_excel.php.Di halaman ini kita bisa melihat tabel yang berisi data yang diambil dari database. Selain itu, kita juga bisa melihat link 'Export ke Excel'. Sekarang kita coba klik link 'Export ke Excel'.
Yep, kita bisa langsung mengunduh Laporan dengan format excel (Menggunakan Chrome). Nah, kalau kamu menggunakan Firefox, kamu bisa lihat Download dialog sebelum kita mengunduh laporan.
Lho, kok bisa ya?
Coba kamu buka file views vw_excel.php dan vw_laporan_excel.php. Kalau kita perhatikan kedua file ini intinya sama-sama menampilkan data dari database ke dalam tabel. Lalu apa bedanya? Nah, bedanya ada pada file vw_laporan_excel.php. Pada file tersebut, terdapat fungsi header().
Nah, berdasar manual PHP, fungsi header() digunakan untuk mengirim raw HTTP header. Di dalam fungsi header() ini terdapat parameter (berupa string) dan jika kita perhatikan parameter pada fungsi ini beda-beda.
Kalau kita ingin menyimpan data yang dikirim, dalam hal ini meng-generate file excel, kita bisa mengisi parameter fungsi header() dengan Content-type (cek line 3) untuk mengirimkan raw data excel dan Content-Disposition (cek line 5) untuk mendefinisikan nama file export dengan nama yang diinginkan dan memaksa browser untuk menampilkan save dialog (contohnya pada firefox). Bisa kita lihat sewaktu tadi kita coba klik link 'Export ke Excel'.
Sekarang kita coba buka file Laporan dengan format excel. Di sini saya membuka dengan program WPS Office, dan kita bisa lihat hasilnya di gambar ini.
***
Gimana mudah kan? Ada banyak cara untuk membuat fitur export data ke dalam format excel. Salah satunya adalah dengan menggunakan fungsi header. Ya, semoga dengan edisi tutorial kali ini kamu dapat memahami dasar pembuatan fitur export dan mengembangkannya menjadi lebih baik. Apabila ada pertanyaan, kritik, saran, request atau ingin berkontribusi bisa disampaikan melalui kolom komentar atau melalui email gungunpriatna02@gmail.com.
Semoga bermanfaat. Sampai jumpa di edisi tutorial berikutnya. Tetap semangat berkarya ya!
Happy coding!
***
Referensi:
Web Official CodeIgniter @ https://codeigniter.com
Documentasi CodeIgniter @ https://codeigniter.com/user_guide/
PHP: header @ http://php.net/manual/en/function.header.php












