setReadDataOnly(true); // 打开文件、载入excel表格 $spreadsheet = $reader->load($path); // 获取活动工作薄 $sheet = $spreadsheet->getSheet($sheetIndex); // 返回表格数据 return self::getCellData($row, $sheet, $field); } catch (\Exception $e) { // 有异常发生 return ['code' => $e->getCode(), 'errMsg' => $e->getMessage()]; } } /** * 获取单元格数据 * @param $row * @param object $sheet * @param array $field * @return array * @throws Exception */ private static function getCellData($row, object $sheet, array $field):array { # 获取最高列 返回字母 如: C $highestColumn = $sheet->getHighestColumn(); # 获取最大行 返回数字 如: 4 $highestRow = $sheet->getHighestRow(); # 列数 改为数字显示 $highestColumnIndex = Coordinate::columnIndexFromString($highestColumn); $data = []; // 从第二行开始读取数据 for ($row; $row <= $highestRow; $row++) { $build = []; // 从第一列读取数据 for ($col = 1; $col <= $highestColumnIndex; $col++) { // 'A' 对应的ASCII码十进制为 64 // 将ASCII值转为字符 $chr = chr(64 + $col); // 列转为数据库字段名 $key = $field[$chr] ?? $chr; // 构建当前行数据 $build[$key] = $sheet->getCellByColumnAndRow($col, $row)->getValue(); } $data[] = $build; //当前行数据 } return $data; } }