您的位置:首页 > 编程语言 > PHP开发

yii2.0框架实现上传excel文件后导入到数据库的方法示例

2020-04-14 12:05 127 查看

本文实例讲述了yii2.0框架实现上传excel文件后导入到数据库的方法。分享给大家供大家参考,具体如下:

Model模型

<?php
/**
* 描述...
* @author zcy
* @date 2019/8/13
*/

namespace app\models;

use yii\base\Model;
use yii\db\ActiveRecord;
use yii\web\UploadedFile;

class uploadForm extends ActiveRecord
{
public $file;

public function rules()
{
return [
[['file'],'file', 'skipOnEmpty' => false,'extensions' => 'xls,xlsx'],
];
}

public function attributeLabels()
{
return [
'file'=> '上传文件'
];
}

public function upload()
{
$file = UploadedFile::getInstance($this, 'file');

if ($this->rules()) {
$tmp_file = $file->baseName . '.' . $file->extension;
$path = 'upload/' . 'Files/';
if (is_dir($path)) {
$file->saveAs($path . $tmp_file);
} else {
mkdir($path, 0777, true);
}
$file->saveAs($path . $tmp_file);
return true;
} else {
return '验证失败';
}
}

}

Views视图

<?php

use yii\widgets\ActiveForm;

$model = new app\models\uploadForm();
$form = ActiveForm::begin([
'id' => 'upload',
'options' => ['enctype' => 'multipart/form-data'],
])
?>

<?= $form->field($model,'file')->fileInput(['multiple'=>'multiple']) ?>

<button>上传</button>
<?php ActiveForm::end() ?>

Controller控制器

<?php
/**
* 描述...
* @author zcy
* @date 2019/8/16
*/

namespace app\controllers;

use app\models\uploadForm;
use Yii;
use yii\web\Controller;
use yii\web\UploadedFile;

class UploadController extends Controller
{
/**
* 导入
* @author zcy
* @date 2019/8/16
*/
public function actionImport()
{
$model = new uploadForm();

if (Yii::$app->request->isPost) {
$model->file = UploadedFile::getInstance($model,'file');
//      if ($model->upload()) {
//        print <<<EOT
// <script>alert('上传成功')</script>
//EOT;
//      } else {
//        print <<<EOT
// <script>alert('上传失败')</script>
//EOT;
//      }
if (!$model->upload()) {
print <<<EOT
<script>alert('上传失败')</script>
EOT;
}
}

$ok = 0;
if ($model->load(Yii::$app->request->post())) {
$file = UploadedFile::getInstance($model,'file');

if ($file) {
$filename = 'upload/Files/' . $file->name;
$file->saveAs($filename);

if (in_array($file->extension,array('xls','xlsx'))) {
$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 (1 < $total_line) {
for ($row = 2;$row <= $total_line;$row++) {
$data = [];
for ($column = 'A';$column <= $total_column;$column++) {
$data[] = trim($phpexcel->getCell($column.$row));
}

$info = Yii::$app->db->createCommand()
->insert('{{%shop_info}}',['shop_name' => $data[0],'shop_type' => $data[1]])
->execute();

if ($info) {
$ok = 1;
}
}
}

if ($ok == 1) {
echo "<script>alert('导入成功');window.history.back();</script>";
} else {
echo "<script>alert('操作失败');window.history.back();</script>";
}
}
}
} else {
return $this->render('import',['model' => $model]);
}
}
}

更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息