/*** 更新安通船期* Description * Author Allen* Date 2024-11-11* @param Request $request [description]* @return [type] [description]*/public function updateAntongShipDate(Request $request){set_time_limit(0);$file = request()->file('file');if (empty($file) || !$file->isValid()) {return '请选择文件';}$extension = $file->getClientOriginalExtension();//文件后缀名$fileType = ['xls', 'xlsx'];if (!in_array($extension, $fileType)) {return '请上传xls\xlsx文件';}if ($file->isValid()) {$data['clientName'] = $file->getClientOriginalName();//文件原名$data['tmpName'] = $file->getFileName();$data['realPath'] = $file->getRealPath();//该文件所在路径$data['extension'] = substr($data['clientName'], strripos($data['clientName'], '.', '-1') + 1);// $data['extension'] = $file->getClientOriginalExtension();//文件后缀名if ($data['extension'] != "xls" && $data['extension'] != "xlsx") {echo('不是Excel文件,重新上传后缀名为xls的Excel表');exit;}$data['mimeTye'] = $file->getMimeType();//文件类型$data['newName'] = $data['clientName'];//存储文件名$file->move(storage_path('tempdir/'), $data['newName']);$filePath = storage_path('tempdir/') . $data['clientName'];} else {return '文件不可用';}try{// 加载Excel文件$spreadsheet = IOFactory::load($filePath);// 获取工作簿中的最后一个工作表$lastSheetIndex = $spreadsheet->getSheetCount() - 1; // 工作表索引是从 0 开始的$worksheet = $spreadsheet->getSheet($lastSheetIndex);// 获取所有合并的单元格$mergedCells = $worksheet->getMergeCells();// 查找包含 "东莞港二期-温州-天津" 的行$rowsToRead = [];foreach ($mergedCells as $cell) {[$startCell, $endCell] = preg_split('/:/', $cell);$cellValue = $worksheet->getCell($startCell)->getFormattedValue();if ($cellValue === '东莞港二期-温州-天津') {$startRow=$worksheet->getCell($startCell)->getRow();$endRow=$worksheet->getCell($endCell)->getRow();$targetRow=$startRow-2;$start_port=$worksheet->getCell('I'.$targetRow)->getFormattedValue();// $end_port=$worksheet->getCell('M'.$targetRow)->getFormattedValue();// 读取 A 列到 S 列,所有值$data = [];for ($row = $startRow; $row <= $endRow; $row++) {$rowData = [];for ($col = 'A'; $col <= 'S'; $col++) {$cellValue = $worksheet->getCell($col . $row)->getFormattedValue();$rowData[$col] = $cellValue;}$data[] = $rowData;}}}unlink($filePath);return '成功更新数据'.count($data).'条';// return $res;} catch (\Exception $e) {$res = ['code' => 600, 'data' => '文件数据读取失败', 'getMessage' => $e->getMessage(), 'getFile' => $e->getFile(), 'getLine' => $e->getLine(), 'getTrace' => $e->getTrace()];return $res;}}