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 ?
barangkali phpexcelnya belom terinstall dengan benar?
ini ilustrasinya http://ctrlv.in/481041
saya juga mengalaminya , namun setelah configurasi yang benar , excel bisa didownload
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 ?
gan gw udah ikut petunjuknya tapi ga muncul juga nich file to save nya. datanya doank yg nongol di browser. grid__mode udah pake export juga. dan ga ada echo pula napa ya? nich code gw
public function actionExport()
{
$model = new Detilpangkat();
$this->widget(‘ext.EExcelView’,array(
‘grid_mode’=>’export’,
‘title’=>’Daftar Pangkat Pegawai’,
‘dataProvider’=>$model->search(),
‘filter’=>$model,
‘columns’=>array(
array(‘header’=>’No’,
‘value’=>’$this->grid->dataProvider->pagination->currentPage*$this->grid->dataProvider->pagination->pageSize + $row+1′),
‘nip’,
‘nip0.nama’,
‘idpangkat0.pangkat’,
‘tmtpangkat’,)));
}
Gan ada kemungkinan bagian:
array(‘header’=>’No’,‘value’=>’$this->grid->dataProvider->pagination->currentPage*$this->grid->dataProvider->pagination->pageSize + $row+1′),
Coba dihilangkan dan ditest lagi.Kalau tidak ada masalah berarti EExcelView tidak mendukung. soalnya berdasarkan catatan $row sepertinya agak tidak berfungsi..
Belum bisa gan udah coba ane hapus untuk numbering nya jadi kek gini
public function actionExport()
{
$model = new Detilpangkat();
$this->widget(‘ext.EExcelView’,array(
‘grid_mode’=>’export’,
‘exportType’=>’Excel5′,
‘title’=>’Daftar Pangkat Pegawai’,
‘dataProvider’=>$model->search(),
‘filter’=>$model,
‘columns’=>array(
// array(‘header’=>’No’,
// ‘value’=>’$this->grid->dataProvider->pagination->currentPage*$this->grid->dataProvider->pagination->pageSize + $row+1′),
‘nip’,
‘nip0.nama’,
‘idpangkat0.pangkat’,
‘tmtpangkat’,)));
tetap tidak mau save to file dia, muncul di halaman browser masih gan.
Hm, cukup aneh. Biasanya kalau tetap muncul teks, kemungkinan bisa banyak.
Saran saya, coba hilangkan satu per satu kolom (‘nip’, ‘nip0.nama’, dst) tapi terakhir-tearkhir harus sisa satu kolom.
Lalu kalo dihilangkan masih tetap muncul tampilan, coba hilangkan satu per satu setting atribut (tapi pastikan ‘grid_mode’ dan ‘dataProvider’ tetap ada….
Jika masih tetap muncul table, maka berikutnya saya akan sarankan mungkin coba cek kelas Detilpangkat fungsi search(), apakah ada coding tidak biasa…
iya gan nanti malam ane coba lagi, kalo belom bisa nampaknya ane harus beralih ke extension lain
oke cukup gan ane ga tahan lagi 3 hari berkutat dengan eexcelview malam ini nyerah ane.
ini di model search gw
public function search()
{
// @todo Please modify the following code to remove attributes that should not be searched.
$criteria=new CDbCriteria;
//$criteria->with=array(‘nip0′);
//$criteria->compare(‘nip0.nama’,$this->cari_nama,true);
$criteria->compare(‘nip’,$this->nip,true);
return new CActiveDataProvider($this, array(
‘criteria’=>$criteria,
//’pagination’=>array(
//’pageSize’=>20),
));
}
ni di controller gw
public function actionExport()
{
$model = new Detilpangkat();
$this->widget(‘ext.EExcelView’,array(
// ‘grid_mode’=>’export’,
// ‘exportType’=>’Excel5′,
// ‘title’=>’Daftar Pangkat Pegawai’,
‘dataProvider’=>$model->search(),
// ‘filter’=>$model,
‘columns’=>array(
// array(‘header’=>’No’,
// ‘value’=>’$this->grid->dataProvider->pagination->currentPage*$this->grid->dataProvider->pagination->pageSize + $row+1′),
‘nip’,
// ‘nip0.nama’,
// ‘idpangkat0.pangkat’,
‘tmtpangkat’,)));
}
tetap ndak mau export tu excel nyerah dah gan
Sep, semoga agan Wend bisa temukan solusinya yah…
ane curiga yang di ext.EExcelView gan, mungkin belum di setting di main config.
Trima kasih gan buat tutorialnya,
convert ke Excel nya berhasil
Cuman saya butuh convert ke Excel hasil Search nya aja.
Gimana yah gan caranya?
Hi. Kamu bisa coba ikuti tutorial yang ini: http://www.computesta.com/blog/2012/07/yii-tutorial-ekspor-excel-sesuai-hasil-filter-use/
sama, punya saya juga tidak berfungsi ketika dihosting, padahal di localhost lancar-lancar saja
ane pake cara eExcelView , munculnya kaya gini gan http://ctrlv.in/480953. Bukannya export ke csv malah cuma nampilin aja ke gridviewnya.
thanks before ya
hoho maaf gan ane ikutin cara diatas, bener bener manjur
astaga ngikutin forum resminya Yii framework punya bule ga ada yang cocok XD
makasih artikelnya yang berguna ini, keep the good work
diletakin script ini dimana ya?
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’,
),
));
terus akses url nya seperti apa ya.. mohon diberikan contoh url nya. terima kasih
mau tanya print yii2 ,pakai word gimana ya ?
gan mau nanya nh kalo tampilannya pas mau export tapi malah nampilin tablenya tanpa style tuh knp ya mhoon responnya terimakasih
Gan, setelah ane coba, kok malah muncul pesan gini ya :
Calling unknown method: app\modules\BelajarModul\controllers\PekerjaController::widget()
padahal ane udh tambahin : use yii\widgets\ActiveForm; di atas sendiri
tolong bantuanya gan, maaf masih belajar