首页 > 解决方案 > 《maatwebsite/excel 3.1》 导入导出excel时如何过滤excel的标题

问题描述

我想将 excel 导入 mysql 这是我的 excel 格式 在此处输入图像描述

但我发现我无法过滤这个excel的标题“name”&&“id_number”这是我第一次使用“maatwebsite/excel”3.1我不知道如何使用

请帮助我谢谢这是我的代码

namespace App\Imports;

use App\Models\Person;
use Maatwebsite\Excel\Concerns\ToModel;

class PersonImport implements ToModel
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {
        return new Person([
            'name' => $row[0],
            'id_number' => $row[1],
            'status' => 1
        ]);
    }

}

这是我的控制器功能

 $import = new PersonImport;
 $result =  Excel::import($import, $request->file('file'));

标签: excellaravelimportexport

解决方案


您可以实现 WithHeadingRow

https://docs.laravel-excel.com/3.1/imports/heading-row.html#heading-row

您的代码将是:

namespace App\Imports;

use App\Models\Person;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;

class PersonImport implements ToModel, WithHeadingRow
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {
        return new Person([
            'name' => $row['name'],
            'id_number' => $row['id_number'],
            'status' => 1
        ]);
    }

}

推荐阅读