/**
* 更新安通船期
* 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;
}
}
![]()