Могу ли я установить 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 и импортировать весь документ во второй раз, и на этот раз я проигнорирую вкладку "Люди" и обработаю вкладку "Финансы".
Как я уже сказал, это не элегантное решение, поэтому, если кто-нибудь придумает лучший способ сделать это, я бы хотел услышать от вас. Но пока это подойдет.