You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP Spreadsheet空行校验问题:如何处理Excel末尾空行?

解决方案

要保留中间空行校验,同时允许末尾空行作为数据结束标志,可以通过先收集所有有效行、再校验连续性的方式实现,逻辑更清晰且避免误判:

修改后的代码

$startRow = 9;
$highestRow = $worksheet->getHighestRow();
$validRows = [];

// 收集第9行及之后A列非空的行号
for ($row = $startRow; $row <= $highestRow; $row++) {
    if (trim($worksheet->getCell("A$row")->getValue()) !== '') {
        $validRows[] = $row;
    }
}

// 校验起始行(第9行)不能为空
if (empty($validRows) || $validRows[0] !== $startRow) {
    return redirect()->back()->with('error', "Attenzione! la riga $startRow non può essere vuota!");
}

// 校验中间行是否存在空行(有效行号必须连续)
for ($i = 1; $i < count($validRows); $i++) {
    if ($validRows[$i] !== $validRows[$i-1] + 1) {
        $emptyRow = $validRows[$i-1] + 1;
        return redirect()->back()->with('error', "Attenzione! la riga $emptyRow non può essere vuota!");
    }
}

// 处理所有有效行的数据
$data_detail = [];
foreach ($validRows as $row) {
    $newEntry = [];    
    $newEntry['codice_articolo'] = trim($worksheet->getCell("A$row")->getValue());  
    $newEntry['quantita'] = trim($worksheet->getCell("B$row")->getValue());      
    $newEntry['prezzo'] = number_format(
        floatval(str_replace(',','.',trim($worksheet->getCell("C$row")->getValue()))), 
        4, '.', ''
    );

    // 校验商品编码是否存在
    $db_cod_art = DB::connection('oracle')
        ->table('orders')
        ->where(DB::raw("TRIM(cod_art)"), $newEntry['codice_articolo'])
        ->count('cod_art');

    if ($db_cod_art != 1) {
        return redirect()->back()->with('error', "Attenzione! Il codice articolo {$newEntry['codice_articolo']} alla riga $row non esiste!");
    }

    $data_detail[] = $newEntry;
}

// 数据处理完成后可添加成功逻辑
// return redirect()->back()->with('success', 'Dati importati correttamente!');

关键修改说明

  1. 收集有效行:遍历工作表所有行,筛选出第9行及之后A列有内容的行号,自动忽略末尾空行。
  2. 起始行校验:确保第9行必须有数据,符合业务要求。
  3. 中间空行校验:检查有效行的行号是否连续,若存在间隔则说明中间有空行,抛出对应错误。
  4. 数据处理:仅遍历有效行处理数据,避免了原代码中对末尾空行的误判。

内容的提问来源于stack exchange,提问作者user18182496

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:15:38