Могу ли я установить для 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 для другого листа?


person Brendan White    schedule 18.12.2017    source источник
comment
вы повторяете данные?   -  person kunal    schedule 18.12.2017
comment
Да. Как правило, данные о людях в порядке, но данные о финансах нарушены — см. jsfiddle.net/qurysp9r. Я установил excel.import.startRow на 3, тогда люди теперь не работают, потому что я пропустил первые две строки, включая строку заголовка - см. jsfiddle.net /s1szqjnj   -  person Brendan White    schedule 19.12.2017


Ответы (2)


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

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;
}
person Joseph Purificación    schedule 13.11.2019

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

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

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

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

person Brendan White    schedule 19.12.2017