• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    yii2.0框架实现上传excel文件后导入到数据库的方法示例

    本文实例讲述了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程序设计有所帮助。

    您可能感兴趣的文章:
    • YII2框架中日志的配置与使用方法实例分析
    • YII2框架中查询生成器Query()的使用方法示例
    • YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
    • YII2框架中behavior行为的理解与使用方法示例
    • YII2 全局异常处理深入讲解
    上一篇:php回调函数处理数组操作示例
    下一篇:yii2.0框架多模型操作示例【添加/修改/删除】
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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