yii2 phpexcel文件上传和导入方法整合

phpexcel文件上传导入方法

##附: phpexcel文件导出方法:
https://blog.csdn.net/qq_34345149/article/details/86626984

控制器方法

public function actionUpload()
{
    
   $model = new Upload();
if (Yii::$app->request->isPost) {
$ok = "";  
if ($model->load(Yii::$app->request->post())) {  
    $file = UploadedFile::getInstance($model, 'file');  //获取上传的文件实例  

if ($file) {   
    $filename = 'uploads/'.date('Y-m-d',time()).'_'.rand(1,9999).".". $file->extension;  
    $file->saveAs($filename);   //保存文件  
    /*exit;
    $format = $file->extension;*/  
    if(in_array($file->extension,array('xls','xlsx'))){  
            /*$excelFile = Yii::getAlias('@web/www/uploads'.$filename.'');*///获取文件名  
            $fileType   = \PHPExcel_IOFactory::identify($filename); //文件名自动判断文件类型  
            $excelReader  = \PHPExcel_IOFactory::createReader($fileType);  
            $phpexcel    = $excelReader->load($filename)->getSheet(0);//载入文件并获取第一个sheet  
            $total_line  = $phpexcel->getHighestRow();//总行数  
            $total_column= $phpexcel->getHighestColumn();//总列数   
            if($total_line > 1){  
                for($row = 2;$row <= $total_line; $row++){  
                    $data = array();  
                    for($column = 'A'; $column <= $total_column; $column++){  
                        $data[] = trim($phpexcel->getCell($column.$row)->getValue());  
                    } 
                    //一行行的插入数据库操作
                    $info=\Yii::$app->mongodb->getCollection('user2')->insert(['_id'=>$data[0],'title'=>$data[1],'by'=>$data[2],'score'=>$data[3]]);
                    if ($info) {  
                        $ok = 1;  
                    }else{
						$ok = 0;
						break;
					}
                }
            }  
            if ($ok == 1){  
                $this->redirect(array('index'));  
            } else{  
                echo "<script>alert('操作失败');window.history.back();</script>";  
            }  
        }  
    }       

}else{
    return $this->render(’upload‘,[
        'model'=>$model
        ]);
	}   
}
        return $this->render('upload', ['model' => $model]);
}

model方法

<?php
namespace frontend\models;

use Yii;

class Upload extends \yii\db\ActiveRecord
{
	public $file;
    public function rules(){
        return [
            [['file'], 'file', 'extensions' => 'jpg, png', 'mimeTypes' => 'image/jpeg, image/png',],
        ];
    }
    public function attributeLabels(){
        return [
            'file'=>'文件上传'
        ];
    }
}

view方法

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<?php if(Yii::$app->session->hasFlash('success')):?>
    <div class="alert alert-danger">
        <?=Yii::$app->session->getFlash('success')?>
    </div>
<?php endif ?>
<?php $form=ActiveForm::begin([
    'id'=>'upload',
    'enableAjaxValidation' => false,
    'options'=>['enctype'=>'multipart/form-data'],
]);
?>
<?= $form->field($model, 'file')->fileInput();?>
<?=  Html::submitButton('提交', ['class'=>'btn btn-primary','name' =>'submit-button']) ?>
<?php ActiveForm::end(); ?> 
</body>
</html>
<?php
$js = <<<'JS'
$('form#{$model->formName()}').on('beforeSubmit', function(e) {
   var \$form = $(this);
}).on('submit', function(e){
    e.preventDefault();
});
JS;
$this->registerJs($js);
?>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值