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);
?>