前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >yii2.0框架实现上传excel文件后导入到数据库的方法示例

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

作者头像
砸漏
发布2020-11-02 16:00:55
1.2K0
发布2020-11-02 16:00:55
举报
文章被收录于专栏:恩蓝脚本恩蓝脚本

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

Model模型

代码语言:javascript
复制
<?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视图

代码语言:javascript
复制
<?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控制器

代码语言:javascript
复制
<?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程序设计有所帮助。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档