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

2020-09-01 12:00:38

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

Model模型

<?php/** * 描述... * @author zcy * @date 2019/8/13 */namespace appmodels;use yiibaseModel;use yiidbActiveRecord;use yiiwebUploadedFile;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视图

<?phpuse yiiwidgetsActiveForm;$model = new appmodelsuploadForm();$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 appcontrollers;use appmodelsuploadForm;use Yii;use yiiwebController;use yiiwebUploadedFile;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程序设计有所帮助。

相关文章 大家在看