Могу ли я установить startRow на разные значения для разных листов, используя Laravel-Excel от Maatwebsite?

Я использую Laravel-Excel от Maatwebsite для импорта файла Excel с двумя листами. Этот файл создан другой системой; Я не могу изменить способ, которым это произведено.

На первом листе первая строка - это заголовки столбцов. Это отлично работает.

Первый лист имеет заголовок в первом ряду

... но на втором листе есть две строки нежелательного текста, а затем заголовки в третьей строке.

Второй лист имеет заголовок в третьем ряду

Я могу установить config(['excel.import.startRow' => 3]) начать импорт с третьего ряда, но это означает, что я пропускаю первые два ряда полезных данных на первом листе.

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

Есть ли способ, которым я могу уйти excel.import.startRow установить 1 для первого листа, но установить excel.import.startRow 3 для другого листа?

1 ответ

Вы можете использовать:

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;
}

Итак, я пришел с ответом. Это не очень хорошее решение, но, думаю, оно подойдет.

Я просто импортирую весь документ, обработаю вкладку "Люди" и проигнорирую вкладку "Финансы".

Тогда я установлю excel.import.startRow 3 и импортировать весь документ во второй раз, и на этот раз я проигнорирую вкладку "Люди" и обработаю вкладку "Финансы".

Как я уже сказал, это не элегантное решение, поэтому, если кто-нибудь придумает лучший способ сделать это, я бы хотел услышать от вас. Но пока это подойдет.

Другие вопросы по тегам