ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

PHP用PHPExcel导入Excel表格的数据到MySQL(thinkPHP3.2.3)

2020-07-03 11:38:12  阅读:301  来源: 互联网

标签:exts thinkPHP3.2 MySQL Excel upload 导入 PHPExcel import 上传


以前写了一篇关于PHP用PHPExcel导出MySQL数据到Excel表格 的文章。现在再写一篇PHP用PHPExcel导入Excel表格的数据到MySQL的文章,作为姊妹篇。

代码如下:

服务端:

//上传方法
  public function upload()
  {
      header("Content-Type:text/html;charset=utf-8");
      $upload = new \Think\Upload();// 实例化上传类
      $upload->maxSize = 3145728;// 设置附件上传大小
      $upload->exts = array('xls', 'xlsx');// 设置附件上传类
      $upload->savePath = '/'; // 设置附件上传目录
      // 上传文件
      $info = $upload->uploadOne($_FILES['excelData']);
      $filename = './Uploads' . $info['savepath'] . $info['savename'];
      $exts = $info['ext'];
 
      if (!$info) { // 上传错误提示错误信息
          $this->error($upload->getError());
      } else {// 上传成功
          $this->data_import($filename, $exts);
      }
  }


  //导入数据方法
  protected function data_import($filename, $exts = 'xls')
  {
      //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
      import("Org.Util.PHPExcel");
      //创建PHPExcel对象,注意,不能少了\
      $PHPExcel = new \PHPExcel();
      //如果excel文件后缀名为.xls,导入这个类
      if ($exts == 'xls') {
          import("Org.Util.PHPExcel.Reader.Excel5");
          $PHPReader = new \PHPExcel_Reader_Excel5();
      } else if ($exts == 'xlsx') {
          import("Org.Util.PHPExcel.Reader.Excel2007");
          $PHPReader = new \PHPExcel_Reader_Excel2007();
      }


      //载入文件
      $PHPExcel = $PHPReader->load($filename);
      //获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
      $currentSheet = $PHPExcel->getSheet(0);
      //获取总列数
      $allColumn = $currentSheet->getHighestColumn();
      //获取总行数
      $allRow = $currentSheet->getHighestRow();
      //循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
      for ($currentRow = 1; $currentRow <= $allRow; $currentRow++) {
          //从哪列开始,A表示第一列
          for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++) {
              //数据坐标
              $address = $currentColumn . $currentRow;
              //读取到的数据,保存到数组$arr中
              $cell = $currentSheet->getCell($address)->getValue();

              if ($cell instanceof PHPExcel_RichText) {
                  $cell = $cell->__toString();
              }
              $data[$currentRow][$currentColumn] = $cell;

          }

      }

      if (is_file($filename)) {
          unlink($filename);
      }
      $this->save_import($data);
  }

  //保存导入数据
  public function save_import($data)
  {
      $result = 1;
      $model = new UserModel();
      foreach ($data as $k => $v) {

          if ($k >= 2) {   //一般第一行是列名

              //do something
             $id = $model->addUser(array('alias' => trim($v['A']),'token'=>$k, 'pass' => strtoupper(md5(trim($v['B']))), 'create_time' => time()));

              if (!$id) {
                  $result = 0;
                  exit($v);
              }

          }

      }

      if (false !== $result || 0 !== $result) {
          $this->success('导入成功');
      } else {
          $this->error('导入失败');
      }
   

  }

客户端:

 <form class="layui-form table table-condensed" action="{:U('upload')}" method="post" enctype="multipart/form-data">

           <div class="layui-form-item">

               <div class="layui-inline">
                   <label class="layui-form-label" style="width: 132px">Excel表格:</label>
                   <div class="layui-input-inline" style="">
                       <input type="file" name="excelData" value=""  datatype="*4-50"  nullmsg="请填写!" errormsg="不能少于4个字符大于50个汉字"/>
                   </div>
               </div>

               <div class="layui-inline">

                   <div class="layui-input-inline layui-form-select">
                       <input type="submit" class="btn btn-primary Sub" value="导入" />

                   </div>
               </div>

           </div>


       </form>

THE END

标签:exts,thinkPHP3.2,MySQL,Excel,upload,导入,PHPExcel,import,上传
来源: https://www.cnblogs.com/ccdv/p/13229391.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有