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

Laravel读取Excel行数据出现重复输出问题求助

问题分析与解决

你的代码出现重复输出的核心原因有两个:

  1. 多余的内层for循环:每个$account已经是Excel中的一行数据,额外添加的for ($i=0; $i<=count($account); $i++)会让当前行内容重复输出「列数+1」次(这里每行有4列,所以重复5次)。
  2. 未跳过表头行:Excel第一行是表头,默认会被遍历输出,若不需要表头可直接跳过。

修正后的代码

public function bulkTransfer(Request $request)
{
    Log::info("########## Validating File #########");

    $request->validate([
        "file" => 'required|file|mimes:csv,xlsx'
    ],[
        "file.mimes" => "File should be a csv or excel file"
    ]);
    Log::info("########## File Validated #########");

    if($request->has("file")){
        $allAccounts = Excel::toArray(new \stdClass(), $request->file("file"));
        foreach ($allAccounts as $accounts){
            // 跳过表头行(索引0的元素),从索引1开始遍历数据行
            foreach (array_slice($accounts, 1) as $account){
                // 直接输出当前行的对应列值,无需额外循环
                echo '<p>'.  $account[1] . " " . $account[2] . " " . $account[3] . "</p>";
            }
        }
    }
}

关键修改点

  • 移除多余的for循环,避免每行内容重复输出。
  • 使用array_slice($accounts, 1)跳过表头行(若需保留表头,可去掉此处理)。
  • 修正验证规则的错误提示键名:原fileName.mimes改为file.mimes,与验证字段名对应。

修正后输出结果

<p>98393 988 3000</p>
<p>87383 8378 2000</p>
<p>89382 888 1500</p>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:57:38