Yii2 Saya punya tugas dari guru, kami buat aplikasi pakai yii2. Nah kami harus bisa buat fungsi mengupload file excel gitu. Jadi ntar kalau file mya di upload b
TI
AndreHomb
Pertanyaan
Yii2
Saya punya tugas dari guru, kami buat aplikasi pakai yii2.
Nah kami harus bisa buat fungsi mengupload file excel gitu.
Jadi ntar kalau file mya di upload bakal langsung di generate dan nampillin semua kolom yg ada di excel ke tampilan yii2 nya.
Tapi saya bingung
Saya cari2 di internet, yang ada hanya import ke database lgsung di code nya. Tapi tugas saya harus upload dari frontend.
Please help
Saya punya tugas dari guru, kami buat aplikasi pakai yii2.
Nah kami harus bisa buat fungsi mengupload file excel gitu.
Jadi ntar kalau file mya di upload bakal langsung di generate dan nampillin semua kolom yg ada di excel ke tampilan yii2 nya.
Tapi saya bingung
Saya cari2 di internet, yang ada hanya import ke database lgsung di code nya. Tapi tugas saya harus upload dari frontend.
Please help
1 Jawaban
-
1. Jawaban ezralucio
[jawaban]
Mata Pelajaran: Teknologi Informatika
Kata kunci: Yii2
• Jawaban pendek:
Yii2
Saya punya tugas dari guru, kami buat aplikasi pakai yii2.
Nah kami harus bisa buat fungsi mengupload file excel gitu.
Jadi ntar kalau file mya di upload bakal langsung di generate dan nampillin semua kolom yg ada di excel ke tampilan yii2 nya.
Tapi saya bingung
Saya cari2 di internet, yang ada hanya import ke database lgsung di code nya. Tapi tugas saya harus upload dari frontend.
Please help
Penjelasan:
Sebenarnya data yang ada dalam file excel yang akan diupload itu dimasukan dulu ke dalam database, kemudian data yang ada dalam database kita tampilkan melalui cgridview. Ini membutuhkan extension yii2 phpexcelreader (http://www.yiiframework.com/extension/php-excel-reader/).
Dan hanya file Excel 97-2003 saja yang bisa di upload.
Pertama kita download terlebih dahulu extension phpexcelreader kemudian kita ekstrak di folder / protected / extension.
Kemudian kita buat form untuk upload data file Excel
<div class="form"><?php $form=$this->beginWidget('CActiveForm', array( 'id'=>'pendapatanexcel-form', 'enableAjaxValidation'=>false, 'htmlOptions'=>array('enctype'=>'multipart/form-data'),)); ?> <div class="row"> <b>Masukkan Data Excel :</b> <?php echo $form->fileField($model,'filee',array('size'=>60,'maxlength'=>200)); ?> <?php echo CHtml::submitButton('Submit'); ?> </div> <?php $this->endWidget(); ?></div>
Atribut filee digunakan sebagai temporary file yang akan kita kirim lewat controller.
Kemudian kita tambahkan script berikut di controller
public function actionCreate() { Yii::import('ext.phpexcelreader.JPhpExcelReader'); $model=new Pendapatanrs; if(isset($_POST['Pendapatanrs'])) { $model->attributes=$_POST['Pendapatanrs']; $fileUpload=CUploadedFile::getInstance($model,'filee'); $path=Yii::getPathOfAlias('webroot').'/FileExcel/'.$fileUpload; $fileUpload->saveAs($path); if( !file_exists( $path ) ) die( 'File could not be found at: ' . $path ); $data=new JPhpExcelReader($path); $baris = $data->rowcount($sheet_index=0); $sukses = 0; $gagal = 0; for ($i=2; $i<=$baris; $i++) { $keterangan = $data->val($i, 2); $jumlah = $data->val($i, 3); $tahun = $data->val($i, 4); $command = Yii::app()->db->createCommand(); $command->insert('Pendapatanrs', array( 'id_pendapatan'=>'', 'keterangan'=>$keterangan, 'jumlah'=>$jumlah, 'tahun'=>$tahun, )); if ($command) $sukses++; else $gagal++; } echo "<h3>Proses import data selesai.</h3>"; echo "<p>Jumlah data yang sukses diimport : ".$sukses."<br>"; echo "Jumlah data yang gagal diimport : ".$gagal."</p>"; unlink($path); $this->redirect(array('admin')); } $this->render('create',array('model'=>$model)); }
Pada script berikut kita bisa lihat bahwa sebenarnya fiile excel yang kita upload hanya sebagai temporary, yang kemudian akan kita hapus (unlink($path);)
Begitulah cara kerja dari ekstentsi yii2 phpexcelreader