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

如何在Laravel中使用laravel-excel导入转置Excel到Eloquent模型

Laravel转置Excel导入Eloquent实现方案

针对你遇到的laravel-excel官方单行映射不支持转置Excel导入的问题,可通过自定义导入类手动转置行列的方式解决,操作步骤如下:

  • 第一步:创建导入类实现ToCollection接口,读取全表数据后做行列转置,再按你的业务规则映射到模型字段
<?php

namespace App\Imports;

use App\Models\YourModel;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;

class TransposedImport implements ToCollection
{
    public function collection(Collection $rows)
    {
        // 行列转置处理,将原表的列转为行
        $transposedRows = collect(array_map(null, ...$rows->toArray()));
        
        // 按需跳过转置后的表头行,示例跳过第一行表头
        $transposedRows->skip(1)->each(function ($item) {
            // 按实际字段对应关系赋值,$item[0]对应转置后第一列的数据
            YourModel::create([
                'column1' => $item[0],
                'column2' => $item[1],
                'column3' => $item[2],
                // 其余字段自行补充
            ]);
        });
    }
}
  • 第二步:在业务逻辑中调用导入类执行导入即可
// 控制器中调用示例
public function handleImport(\Illuminate\Http\Request $request)
{
    $request->validate([
        'excel_file' => 'required|file|mimes:xlsx,xls'
    ]);
    
    \Maatwebsite\Excel\Facades\Excel::import(new TransposedImport, $request->file('excel_file'));
    
    return response()->json(['status' => 'success', 'msg' => '导入完成']);
}

如果需要加数据校验、批量插入优化,可对应引入laravel-excel的WithValidation、WithBatchInserts等内置接口即可,完全适配多行转置Excel的导入需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 05:21:02