Studi Kasus : Melakukan Export data dari Database (Mysql) ke file Excel dalam CodeIgniter
Requirements : Webserver Package, already installed. CodeIgniter.
Export data sangat dibutuhkan apabila kita mendevelop aplikasi, terutama untuk aplikasi perkantoran. Sebagian besar perkantoran masih menggunakan excel untuk memanage data mereka, karena excel memang salah satu aplikasi paling awal yang digunakan untuk memanajemen data perkantoran.
Step 1 : Konfigurasi CI
- Buka file config.php yang berada dalam folder system-application-config-config.php
- Ubah base url, sesuaikan dengan lokasi dimana folder CI-mu berada (tempat ekstrak-an tadi). Contoh : Folder CI anda berada dalam folder www/ci
maka ubah baris$config['base_url']="http://example.com/";
dengan
$config['base_url'] = "http://localhost/ci/";
- Setting database. Buka file database.php yang berada dalam folder yang sama dengan config.php. Ubah hostname, username, password, dan nama database. Sesuaikan dengan pengaturan mysql anda. Contoh :
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "db_tutorial";
Step 2 : Siapkan Database
- Buat database dengan nama db_tutorial (via phpmyadmin)
- Siapkan tabel dengan nama tb_book (untuk strukturnya, lihat gambar dibawah ini)
- Insertkan beberapa sample data, sebagai contoh insertkan data seperti tabel dibawah ini.
- Ok, we’re done with database !
Step 3 : Membuat Controller
- Ketikkan script berikut,
[sourcecode language=”php”]
<?php
class Buku_con extends Controller {
public function Buku_con() {
parent::__construct();
$this->load->model(‘buku_model’);//load the model
$this->load->library(‘pagination’);
}
//function to get the data from tb_book
function getBuku() {
$data[‘title’] = ‘menampilkan isi buku’;
$data[‘detail’] = $this->buku_model->getBuku();//call the model and save the result in $detail
$this->load->view(‘buku_view’, $data);
}
//function to export to excel
function toExcelAll() {
$query[‘data1’] = $this->buku_model->ToExcelAll();
$this->load->view(‘excel_view’,$query);
}
}
?>[/sourcecode] - Simpan dengan nama buku_con dalam folder system-application-controllers
- Penjelasan :Lihat di komen script.
Step 4 : Membuat Model
- Ketikkan script berikut,
[sourcecode language=”php”]
<?php
class Buku_model extends Model {
function Buku_model() {
parent::Model();
}
function getBuku() {
$this->db->select(‘*’);
$this->db->from(‘tb_book’);
$this->db->order_by(‘id’,’DESC’);
$getData = $this->db->get();
if($getData->num_rows() > 0)
return $getData->result_array();
else
return null;
}
//query for get all data
function toExcelAll() {
$this->db->select(‘*’);
$this->db->from(‘tb_book’);
$this->db->order_by(‘id’,’desc’);
$getData = $this->db->get();
if($getData->num_rows() > 0)
return $getData->result_array();
else
return null;
}
}
?>
[/sourcecode] - Simpan dalam folder system-application-models, dengan nama buku_model.php
Step 5 : Membuat View (yang menampilkan link untuk export)
- Ketikkan script berikut,
[sourcecode language=”php”]
<h4>Book Data</h4>
<?php if(count($detail) > 0) { ?>
<table border="1">
<tr>
<th>ID</th>
<th>Title</th>
<th>Author</th>
</tr>
<?php
foreach($detail as $rows) {
echo "<tr>";
echo "
<td>". $rows[‘id’]."</td>
<td>". $rows[‘title’] ."</td>
<td>". $rows[‘author’] ."</td>
"; } ?>
</table>
<?php } ?>
<br> <br>
<a href=’toExcelAll’><span style=’color:green;’>Export All Data</span></a>
[/sourcecode] - Simpan dalam folder system-application-views, dengan nama buku_view.php
- Penjelasan :
$detail
didapatkan dari controller, variabel ini berisi data dari tb_book (hasil dari model). Kemudian data ditampilkan dalam bentuk arrays.
Step 6 : Membuat View (view untuk menconvert ke excel)
- Ketikkan script berikut,
[sourcecode language=”php”]
<?php
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=exceldata.xls");
header("Pragma: no-cache");
header("Expires: 0");
?>
<table border=’1′ width="70%">
<tr>
<td>ID</td>
<td>TITLE</td>
<td>AUTHOR</td>
</tr>
<?
foreach($data1 as $item) {
?>
<tr>
<td><?=$item[‘id’]?></td>
<td><?=$item[‘title’]?></td>
<td><?=$item[‘author’]?></td>
</tr>
<? } ?>
</table>
[/sourcecode] - Simpan dalam folder system-application-views, dengan nama excel_view.php
Step 7 : Testing Code
- Buka browser, pergi ke http://localhost/namaFolderCIKamu/buku_con/getBuku
- Anda akan melihat tampilan seperti berikut,
- Klik pada link Export to excell, maka browser akan otomatis mendownload file excel,
- Buka file excel yang telah di download, maka data dari tb_book akan ditampilkan π
Silahkan mencoba π Happy Coding π
24 replies on “Export dari Database ke File Excel dalam CodeIgniter”
di buka di excel gak ada datanya
Mas, kalau pas setelah di export itu error di $item nya itu krn apa? tulisan nya sih ‘Undefined Variable : $item’ coba solusi nya ya mas
Kalau ke dalam format 2007 bagaimana ya mas
Thanks mas, Tutorialnya sangat bermanfaat sekali.
mas, klo export excel nya dari perintah ‘select option’ diawal itu bisa kah?
jadi isi excel nya sesuai dengan isian yang sesuai dengan pilihan yg kita pilih.
Terima kasih gan atas informasinya. saya mau tanya kalau hubungan relasi antar table database bisa ngga gan
gan kenapa hasil export nya error ,,, $item itu apa ? , maaf gan saya masih pemula .
btw terimakasih tutrotialnya
Makasih Banyak gan sangat membantu sempat mengalami kesulitas tapi saya ulik lagi berhasil makasih banyak
gan punyaq muncul kesalahn kaya gini….
Severity: Notice
Message: Undefined variable: item
Filename: core/Loader.php(679) : eval()’d code
Line Number: 17
Thanks yah gan
Mau tanya, klo file hasil exportnya Read Only bagaimana ya. Thx, mohon reply nya.
“thx infonyaβ¦
udah aq coba, tp klo record berisi (misal) 9223372036854775807 ato number lebih dari 15 digit, di excel jadinya 9.22337E+18 dan klo aq ganti ke text/lainnya malah berubah sm yg di dB.
mohon pencerahannya
thx”
samaaa…mhon pencerahannya… (funkydance)
Makasih banget buat sharingnya. kebetulan bgt sesuai dengan yg saya cari….
thx infonya…
udah aq coba, tp klo record berisi (misal) 9223372036854775807 ato number lebih dari 15 digit, di excel jadinya 9.22337E+18 dan klo aq ganti ke text/lainnya malah berubah sm yg di dB.
mohon pencerahannya π
thx
Thank you
it works for me
biar bisa, ubah setting autoload na seperti ini…
$autoload[‘libraries’] = array(‘database’);
kalo misalnya tampilan yg udah jadi di web..trus upload ke excel bisa? jadi sumber’a bkn dari database tapi dari tampilan view web’a?
wadowh panjang banget”” ijin ngikuti kang maklum newbie nih
salam from hpnokia.blogspot.com
wew..mas..yang ini udah sesuai tutor saya ikuti tapi ga mau juga….gimana ini….???? kalao di settingan routesnya emang ga dirubah ya, trus autoloadnya juga??? kasi yang complate ya mas…..kalau bisa kirimkan ke fb saya mas, email : alien_awan44@yahoo.com makasihh mas….
wew..mas..yang ini udah sesuai tutor saya ikuti tapi ga mau juga….gimana ini….???? kalao di settingan routesnya emang ga dirubah ya, trus autoloadnya juga??? kasi yang complate ya mas…..kalau bisa kirimkan ke fb saya mas, email : alien_awan44@yahoo.com makasihh mas…. lg butuhh ini
sama nih.. emang ga ada settingan routesnya ya??
selalu object not found deh..
Nice share. Mohon bantuannya untuk buat worksheet yang lebih 1.
π
Tips yang bagus sekali untuk database, makasih π
tes