PHP---导入Excel数据

最近在开发一个系统,需要做大量的数据处理,特别是导入数据,使用的框架thinkphp6,就目前来说,下面介绍一种逐行添加的方法:

注意:以下这种方式,仅提供开发思路,读取一行,添加一行。

但是这个方法有BUG,亲测,例如:我要导入一个10M的文件,字段有40几个,还有一个富文本的字段,总计:3.5万条。

出现的BUG:导入不进去,也就是超时,但是程序还在执行添加操作。

仅参考,不建议使用。

public function importExcel($file)
{
  if(!$file) return null;
  $filename = '.' . $file;
  $suffix = explode('.',$file);
  $exts = array_pop($suffix);
  $phpExcel = new \PHPExcel();
  // 文件后缀
  if($exts == 'xls'){
      $objRead = new \PHPExcel_Reader_Excel5();
  }else{
      $objRead = new \PHPExcel_Reader_Excel2007();
  };
  // 载入文件 
  $obj = $objRead->load($filename);
  // 获取第一个表
  $currSheet = $obj->getSheet(0);
  // 获取总行数
  $rowCnt = $currSheet->getHighestRow();
  // 获取中列数
  $columnH = $currSheet->getHighestColumn();
  $row ='A';
  // 字母加一位方便下面判断
  $columnH++;
  $fields = array_keys($this->fields);
  $success = 0;
  // 获取数据到data
    for($column = 2; $column <= $rowCnt; $column++){
          $data = [];
          $index = 0;
      while($row != $columnH){
          $data[$fields[$index]] = $currSheet->getCell($row.$column)->getValue();
          $row++;
          $index++;
      }
      $row = 'A';
      $result = $this->universityService->add($data);
      if($result) $success ++;
  }
  var_dump('成功导入' . $success . '条');
}

打完收工!

posted @ 2022-09-03 22:58  帅到要去报警  阅读(1221)  评论(0编辑  收藏  举报