[CodeIgniter] Mudahnya Membuat Laporan dalam Bentuk Excel pada CodeIgniter
Tutorial mengenai pembuatan laporan dalam bentuk Excel sebenarnya telah banyak tersebar di google, akan tetapi disini saya akan memberikan tips agar pembuatanya jauh lebih mudah. Sekalian promosi Library CodeIgniter untuk membuat laporan excel, library ini saya namakan Excel Generator. Excel Generator ini merupakan class yang diturunkan dari PHPExcel. Lalu bagaimana cara menggunakannya ?
Bahan tambahan
- Download Excel Generator disini https://github.com/didanurwanda/Excel-Generator
- Download PHPExcel disini phpexcel.codeplex.com
Jika Anda telah mendownload semuanya, silahkan buat projet CodeIgniter anda dan pilih database sesuai kehendak Anda, disini saya menggunakan database 'test' dengan table 'users' dan isinya seperti berikut.
CREATE TABLE IF NOT EXISTS `users` ( `id` int(3) NOT NULL AUTO_INCREMENT, `nama` varchar(100) NOT NULL, `jenis_kelamin` varchar(10) NOT NULL, `alamat` varchar(200) DEFAULT NULL, `email` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO `users` (`id`, `nama`, `jenis_kelamin`, `alamat`, `email`) VALUES (1, 'Dida Nurwanda', 'Laki-laki', 'Pandeglang', 'didanurwanda@gmail.com'), (2, 'Siwi Septi Hastuti', 'Perempuan', 'Pandeglang', '-'), (3, 'Ahmad', 'Laki-laki', 'Serang', 'ahmad_hehe@gmail.com'), (4, 'Saepul', 'Laki-laki', 'Lebak', 'sae_sae_pull@gmail.com');
Setelah itu buka file phpexcel yang telah Anda download tadi kemudian extract folder classes ke folder library pada project CodeIgniter Anda dan ubah namanya dengan nama "PHPExcel". Jangan lupa extract juga Excel_generator.php tentunya masih pada folder library. Jika semua sudah selesai, kemudian atur konfigurasi database anda. Kemudaian karena hanya contoh, silahkan buka controller welcome.php dan edit seperti berikut
<?php class Welcome extends CI_Controller { public function __construct() { parent::__construct(); $this->load->database(); $this->load->library('Excel_generator'); } public function index() { $query = $this->db->get('users'); $this->excel_generator->set_query($query); $this->excel_generator->set_header(array('Nama', 'Jenis Kelamin', 'Alamat', 'Email')); $this->excel_generator->set_column(array('nama', 'jenis_kelamin', 'alamat', 'email')); $this->excel_generator->set_width(array(25, 15, 30, 15)); $this->excel_generator->exportTo2007('Laporan Users'); } }
Kemudian buka browser Anda dan buka link project Anda, nanti akan ada dialog download, silahkan open file excelnya. Untuk hasilnya seperti berikut.
Keren bukan, hehe.
Sebenarnya script utama pada untuk membuat file excel adalah hanya
Lalu apa bedanya jika scriptnya hanya seperti diatas ? ok saya jelaskan satu persatu.$query = $this->db->get('users');
$this->excel_generator->set_query($query);
$this->excel_generator->set_column(array('nama', 'jenis_kelamin', 'alamat', 'email'));
$this->excel_generator->exportTo2007('Laporan Users');
$this->excel_generator->set_query($query);
Digunakan untuk memanggil query dari database.
$this->excel_generator->set_column(array('nama', 'jenis_kelamin', 'alamat', 'email'));
Digunakan untuk manampilkan field-field mana saja yang akan ditampilkan pada excel. Field-field ini diampil dari table suatu database.
$this->excel_generator->exportTo2007('Laporan Users');
Digunakan untuk mengexport laporan kedalam bentuk file .xlsx (Excel 2007) dengan nama Laporan Users
$this->excel_generator->exportTo2003('Laporan Users');
Digunakan untuk mengexport laporan kedalam bentuk file .xls (Excel 2003) dengan nama Laporan Users
$this->excel_generator->set_width(array(25, 15, 30, 15));
Digunakan untuk menambahkan lebar kolom pada excel, jumlahnya harus sesuai dengan jumlah column yang anda masukan.
$this->excel_generator->set_header(array('Nama', 'Jenis Kelamin', 'Alamat', 'Email'));
Digunakan untuk menambahkan Judul pada setiap kolom pada Excel.
$this->excel_generator->start_at(8);
Digunakan untuk memulai pembuatan laporan dari baris ke 8. Ini dapat dimanfaatkan untuk menambahkan Judul atau Header dokumen pada laporan Anda.
Download
Password : didanurwanda.blogspot.com
tutorial bagus..
BalasHapuscoba datanya bukan text tapi angka.. eh jangan sekedar angka.. kasi angka dibelakang koma.. saya mau lihat hasilnya..
normal kok bro, cuma kalo di db bentuknya "," di excel dia minta di convert. tapi kalo bentuknya "." jalan normal
Hapuskalo angkanya panjang hasilnya 66277288600E+12 ...ini gmna caranya supaya angkanya tampil smuanya..
HapusMantap Tutorial a mas,,,
BalasHapusane tunggu untuk Upload a ya ?? :)
Mantep tutorialnya mas, langsung jalan. tp sayang untuk text angka yg didepannya ada angka nol jadi hilang semua, contoh: harusnya '00123' menjadi '123'. Caranya supaya angka tidak hilang gmana mas. trims sebelumnya
BalasHapusiya ini gn caranya, mohon di respond donk
Hapusmaaf baru aktif ngeblog lagi. gimana ? udah bisa ?
HapusTerima kasih Sangat membantu. Hanya untuk data seperti nomer Handphone (yang ada leading zero) outputnya masih berantakan.
HapusCara manggilnya gmna gan?
BalasHapusseperti biasa, masukkan link sesuai dengan controller dan methodnya.
Hapusseperti pada controller "report" dengan method "print()"
berarti /index.php/report/print
Ka cara tampilin data nya ga langsung di select ke table gimana yah? Jadi saya itu pengen menampilkan data yg tampil di programnya, misal : datanya di filter, di tampilkan yg tgl 1 desember - 10 desember aja. Cara ambil data yg tampilnya itu gimana? saya newbie banget dah ini hehehe
BalasHapuskalo untuk impor gimana mas? kabarin aku di emailku ya mas
BalasHapusKalo mau nampilin dengan join 5 tabel gmn om? dan mau nambahin 1 kolom No gmn?soalnya di db saya tidak ada field no.
BalasHapusmas cara membuat judul di exelnya gimana?
BalasHapuskalo udah biasa pake php excel, bisa langsung aja ko pake method $this->excel_generator->start_at(line keberapa untuk tabel) untuk memberi jarak mulai. selanjutnya pake $this->excel_generator seperti biasa (method yg sama dengan new PHPExcel)
HapusGan ane ada pertanyaan gan, bisa g nampilin gambar pada tiap baris dari cell gan
BalasHapuscem data siswa gtu tapi ada gambarnya pada tiap baris sama nama nya gtu gan
makasi buat petunjuknya gan
kalau ada data 1 sama 0, terus kalau 1 jadi dibayar, 0 belum dibayar gmna?
BalasHapusthanks
gan boleh minta project nya ? mau liat penempatan phpexcelnya
BalasHapusgimana kalo saya ingin melakukan merge column ?
BalasHapusmas , cara set authors , last saved , dll gimana ya ? saya masih bingung...
BalasHapus