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

Can I set startRow to different values for different sheets using Maatwebsite's Laravel-Excel?

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

在第一个 sheet 上,第一行是列标题。这很好用。

...但是第二个 sheet 有两行不需要的文本,然后是 第三个 行中的 headers。

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

    config(['excel.import.startRow' => 3]);
    $sheets = $import->all();

有什么方法可以让第一个 sheet 的 excel.import.startRow 设置为 1,而另一个 sheet 的 excel.import.startRow 设置为 3?

所以我想出了一个答案。这不是一个 很好的 解决方案,但我想它可以。

我将只导入整个文档,处理“人员”选项卡并忽略“财务”选项卡。

然后我将 excel.import.startRow 设置为 3 并第二次导入整个文档,这次我将忽略“人员”选项卡并处理“财务”选项卡。

就像我说的那样,这不是一个优雅的解决方案,所以如果有人想出更好的方法,我很乐意听取您的意见。但现在就可以了。

您可以使用:

use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithStartRow;

在class中:

class nameClass implements ToModel, WithHeadingRow, WithStartRow

添加功能:

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

/**
 * @return int
 */
public function startRow(): int
{
    return 4;
}