Salah satu jenis format file yang paling sering diekspor di dunia Web, menurut penulis, adalah Excel. Jika Anda seorang programmer PHP, sudah pasti tidak asing lagi dengan pustaka yang bernama PHPExcel. Tahukah kalian, Yii memiliki extension yang membungkus PHPExcel sehingga menjadi sangat gampang digunakan?
Sebenarnya Anda bisa saja menggunakan PHPExcel langsung di Yii karena sifat Yii yang gampang mengimplementasi pustaka pihak ketiga (extensible). Tetapi jika Anda malas menggunakan sintaks PHPExcel, dan ingin hasil yang instan, maka EExcelView akan menjadi jawaban tepat.
EExcelView menghasilkan Excel segampang membuat CGridView. Semuanya pasti setuju, untuk menampilkan informasi tabel di CGridView sangat sederhana sekali. Lihat saja sintaks yang perlu ditulis untuk menampilkan daftar buku di CGridView:
$model = new Buku(); $this->widget('zii.widgets.grid.CGridView', array( 'dataProvider' => $model->search(), 'columns' => array( 'id', 'judul', 'tahun', 'pengarang.nama', ), ));
Nah, sekarang misalnya kita ingin daftar buku ini tidak ditampilkan di CGridView, melainkan diekspor ke file Excel. Bagaimana caranya mengekspor daftar-daftar buku tersebut ke Excel? Berikut merupakan tiga langkah sederhananya:
1. Pasang PHPExcel
Untuk dapat menggunakan EExcelView, kita memerlukan PHPExcel. Sayangnya EExcelView tidak menyertakan PHPExcel. Jadi kita harus men-download secara terpisah. Anda bisa men-download PHPExcel dan ambil folder phpexcel untuk taruh di dalam folder webroot/protected/extensions.
2. Pasang EExcelView
Download file EExcelView terbaru. Kemudian masukkan file EExcelView.php ke dalam folder webroot/protected/extensions.
3. Contoh Penggunaan
Sekarang saatnya kita menulis koding untuk ekspor file tersebut. Supaya bisa menghasilkan file Excel, maka sintaks tersebut harus diletakkan di dalam controller. Di contoh berikut penulis meletakkannya di dalam actionExport():
public function actionExport(){ $model = new Buku(); $this->widget('ext.EExcelView', array( 'grid_mode'=>'export', 'title' => 'Daftar Buku', 'dataProvider' => $model->search(), 'filter' => $model, 'columns' => array( 'id', 'judul', 'tahun', 'pengarang.nama', ), ));
Untuk mengetesnya silahkan langsung mengakses URL tersebut. Maka browser akan langsung bertanya ingin men-donwload file Excel atau tidak. Jika Anda download dan buka, voila! Isinya sama seperti konten buku.
Jika ternyata yang muncul bukan file Excel malah tampilan grid(tabel), maka ini disebabkan Anda belum mengatur grid_mode. Pada default, grid_mode akan bernilai “grid” yang artinya akan menghasilkan tampilan tabel. Kita harus ganti menjadi “export” baru EExcelView akan menghasilkan file Excel.
Gan, saya uda coba, tapi kenapa ga terexport ke excel yah ? malah tampil di screen web nya ? Apa ada yg kurang ?
Wah. susah tebaknya… coba saja paste koding Controller agan ke pastebin. Mungkin dari situ saya bisa tahu penyebabnya apa..
Siapp gan,sudah dikirim ke pastebin dengan url http://pastebin.com/LjFkj1Tw
Hi gan, sudah bisa gan.. pada grid_mode nya itu default nya bernilai ‘grid’, tinggal diganti nilainya menjadi ‘export’.
Ow gitu gan.. saya akan tambahkan pada poin di atas biar orang lain juga tahu. Terima kasih yah.
Siapp gan.. agan emang mantabs dah..
Setelah baca tutorial ini, akhirnya saya bisa mengimport data CGridView ke Excel.
Tetapi, data yang terimport adalah semua data yang ada. Bagaimana caranya kalau saya hanya ingin mengimport data bardasarkan pencarian yang dilakukan di Cgridview?
Mohon bantuannya mas…
Terima Kasih Banyak
Hi! Sebelumnya terima kasih sudah mengunjungi blog kami. Karena EExcelGridView menggunakan CActiveDataProvider buat pencarian, kita bisa buat supaya dia export sesuai hasil search saja dengan cara mengirim parameter search. Nah untuk mengirim parameter, yang terpikir penulis adalah dengan pakai cara POST. Penulis akan coba posting tutorial mendetailnya di artikel mendatang~ Sering-sering berkunjung ke blog kami untuk cek
Oke, ditunggu tutorialnya ya mas…
Terima kasih banyak.
@Naisa Akhirnya artikel tutorial untuk filter di EExcelView sudah jadi. Silahkan dicek…:D http://www.computesta.com/blog/2012/07/yii-tutorial-ekspor-excel-sesuai-hasil-filter-use
[...] Tutorial, Yii Framework Pada artikel sebelumnya kita sudah pernah membahas bagaimana mengekspor hasil CGridView ke dalam Excel. Tetapi pertanyaannya sekarang adalah mungkinkah kita mengekspor data yang hanya difilter user ke [...]
gan, saya belum bisa aja nih, selalu yang keluar masih tampilan table
[...] sumber [...]
Ikut newbie gan! Thanks
gan ane udah nyobain tutorial diatas kok ngga bisa ya..jadi halaman yang muncul cuma halaman kosong aja.
Padahal grid_mode sudah ane ikutin
‘grid_mode’=>’export’,
kalo ane rubah modenya jadi ‘grid’ datanya muncul.
itu kenapa ya???
gan mau tanya nih, saya mau download file excel yang udah ada tanpa ambil data dari database, gimana ya gan caranya?
saya udah ngikitin tutorial diatas, tapi kok masih belum bisa ya? padahal grid_mode udah export gitu?
Harus diperhatikan juga di action yang buat export excel ini. Kalau contoh di atas saya pakai public function actionExport().
Coba cek apakah action ini ada dikasih echo sesuatu? Kalau ada echo sesuatu maka dia tidak akan bisa export file…
sudah bisa kok master, ternyata extensi yang saya gunakan salah
gan ini ane udah nyoba sesuai codingan diatas, controller g dikasih echo juga, knpa tetep munculnya tabelnya aja ya g kedownload?
gan punya ane yang keluar cuma tampilan tabel bukan file excel.grid_mode udah export trus tanpa sintax echo juga.gimana nih gan?mohon bantuannya..
Misi gan, udah nyoba kalau udah di hosting belum ?
kok ane coba kalau udah online, dia ga ke download yak ?
terima kasih
Seharusnya tidak berkaitan di online ataupun di localhost.
Maksud agan, tidak ke-download dalam artian dia muncul dalam bentuk CGridView, padahal coding yang sama persis di localhost bisa download?
Iya gan, kalo yang di localhost kan otomatis dia download ketika buka controllernya.
Nah pas gw coba di taro hosting, malah jadi “This webpage is not found” tanpa muncul apa2.
Set path udah sesuai sama di localhost. Kenapa yak kira2 gan ?