最近在开发一个系统,需要做大量的数据处理,特别是导入数据,使用的框架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 . '条'); }
打完收工!
标签:++,Excel,---,currSheet,导入,file,PHPExcel,PHP,row From: https://www.cnblogs.com/e0yu/p/16653919.html