- Upload file excel
- Membaca data dari file excel dan menginputkannya ke dalam database
- Unlink file excel
//models/ImportForm.php
<?php
class ImportForm extends CFormModel{
public $file_excel;public function rules(){
return array(
array(‘file_excel’,’file’,’types’=>’xls’,
‘allowEmpty’=>false),
);
}public function attributeLabels(){
return array(
‘file_excel’=>’File’,
);
}
}
?>
//views/mahasiswa/_formimport.phpbeginWidget(‘CActiveForm’, array(
‘id’=>’import-form’,
‘enableAjaxValidation’=>false,
‘htmlOptions’=> array(‘enctype’=>’multipart/form-data’),
)); ?>labelEx($model,’file_excel’); ?>
Filefield($model,’file_excel’); ?>
error($model,’file_excel’); ?>……
//views/mahasiswa/import.php
<h1>Import Mahasiswa</h1>
<?php $this->renderPartial(‘_formimport’, array(‘model’=>$model)); ?>3. Langkah terakhir adalah membuat action import, perhatikan kode di bawah ini :
public function actionImport()
{
$model=new ImportForm;
require_once Yii::app()->basePath.’/../upload/excel_reader2.php’;if (isset($_POST[‘ImportForm’]))
{
$a=$model->validate();
if ($a) {
//upload file
$model->attributes=$_POST[‘ImportForm’];
$file=CUploadedFile::getInstance($model,’file_excel’);
$file->saveAs(Yii::app()->basePath.’/../upload/import.xls’);//Read excel to array
$path=Yii::app()->basepath.’/../upload/import.xls’;
$data = new Spreadsheet_Excel_Reader($path);
$nim=array();
$nama=array();
$alamat=array();$berhasil=0;
$gagal= 0;
//insert into database
for ($j=2; $j <= $data->sheets[0][‘numRows’]; $j++)
{
$nim[$j]=$data->sheets[0][‘cells’][$j][1];
$nama[$j]=$data->sheets[0][‘cells’][$j][2];
$alamat[$j]=$data->sheets[0][‘cells’][$j][3];$model= new Mahasiswa;
$model->nim=$nim[$j];
$model->nama=$nama[$j];
$model->alamat=$alamat[$j];
$model->create_time=new CDbExpression(‘now()’);
$model->save();//hitung record
if(!$model->save()){
$gagal++;
} else {
$berhasil++;
}
}
Yii::app()->user->setFlash(‘sukses’,$berhasil.’ record
berhasil disimpan dan ‘.$gagal.’ record gagal disimpan..’);
//hapus file excel
unlink ($path);
$this->redirect(array(‘admin’));
}
}
$this->render(‘import’,array(‘model’=>$model));
}Hasilnya :