0

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

在第一张纸上,第一行是列标题。这工作正常。

第一张表在第一行有标题

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

第二张表在第三行有标题

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

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

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

4

2 回答 2

4

您可以使用:

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

在班上:

class nameClass implements ToModel, WithHeadingRow, WithStartRow

添加功能:

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

/**
 * @return int
 */
public function startRow(): int
{
    return 4;
}
于 2019-11-13T17:59:05.550 回答
0

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

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

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

就像我说这不是一个优雅的解决方案,所以如果有人想出更好的方法来做到这一点,我很乐意听取您的意见。但现在它会做。

于 2017-12-19T19:40:10.893 回答