我可以使用 Maatwebsite 的 Laravel-Excel 将不同工作表的 startRow 设置为不同的值吗?

Bre*_*ite 0 laravel maatwebsite-excel phpdotenv

我正在使用Maatwebsite 的 Laravel-Excel导入包含两张表的 Excel 文件。该文件是由另一个系统生成的;我无法改变它的制作方式。

在第一张纸上,第一行是列标题。这很好用。

第一张工作表的第一行有标题

...但第二张纸有两行不需要的文本,然后是第三行的标题。

第二张表的标题位于第三行

我可以设置config(['excel.import.startRow' => 3])从第三行开始导入,但这意味着我错过了第一张表中的前两行有用数据。

    config(['excel.import.startRow' => 3]);
    $sheets = $import->all();
Run Code Online (Sandbox Code Playgroud)

有什么办法可以将excel.import.startRow第一张纸设置为 1,而将excel.import.startRow另一张纸设置为 3 吗?

小智 5

您可以使用:

use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithStartRow;
Run Code Online (Sandbox Code Playgroud)

在班上:

class nameClass implements ToModel, WithHeadingRow, WithStartRow
Run Code Online (Sandbox Code Playgroud)

添加功能:

 public function headingRow(): int
{
    return 3;
}

/**
 * @return int
 */
public function startRow(): int
{
    return 4;
}
Run Code Online (Sandbox Code Playgroud)