Можно ли каким то образом импортировать файл эксель, при условии, что поля на страницах отличаются?

Да, в Laravel есть набор инструментов, которые позволяют легко импортировать файлы Excel с разными полями на страницах.

Одним из самых популярных инструментов для работы с Excel в Laravel является пакет "MaatwebsiteExcel". Для его установки вам следует выполнить следующие шаги:

1. Установите пакет, выполнив в терминале команду:

composer require maatwebsite/excel

2. Подключите провайдер услуги и фасаду в файле config/app.php:

'providers' => [
    // ...
    MaatwebsiteExcelExcelServiceProvider::class,
],

'aliases' => [
    // ...
    'Excel' => MaatwebsiteExcelFacadesExcel::class,
],

Теперь, чтобы импортировать файл Excel с разными полями на страницах, вам нужно создать класс экспорта, используя интерфейс WithMultipleSheets. Ниже приведен пример такого класса:

namespace AppExports;

use MaatwebsiteExcelConcernsWithMultipleSheets;

class MultipleSheetsExport implements WithMultipleSheets
{
    protected $sheets;

    public function __construct(array $sheets)
    {
        $this->sheets = $sheets;
    }

    public function sheets(): array
    {
        $exports = [];

        foreach ($this->sheets as $sheet) {
            $exports[] = new $sheet['exportClass']($sheet['fields']);
        }

        return $exports;
    }
}

В этом примере мы создаем класс MultipleSheetsExport, который принимает массив листов с полями в конструкторе. Затем мы перебираем каждый лист и создаем экземпляр класса экспорта, передавая ему поля.

Далее создайте класс экспорта для каждого листа с соответствующими полями. Ниже приведен пример такого класса:

namespace AppExports;

use MaatwebsiteExcelConcernsFromArray;
use MaatwebsiteExcelConcernsWithHeadings;

class SheetExport implements FromArray, WithHeadings
{
    protected $fields;

    public function __construct(array $fields)
    {
        $this->fields = $fields;
    }

    public function array(): array
    {
        // Возвращаем массив данных для каждого поля
    }

    public function headings(): array
    {
        return array_keys($this->fields);
    }
}

В этом примере мы создаем класс SheetExport, который реализует интерфейсы FromArray и WithHeadings. Метод array() возвращает массив данных для каждого поля, а метод headings() возвращает массив с заголовками.

Наконец, чтобы импортировать файл, вы можете использовать следующий код в контроллере или где угодно в вашем приложении:

use AppExportsMultipleSheetsExport;
use MaatwebsiteExcelFacadesExcel;

public function import()
{
    $sheets = [
        [
            'exportClass' => SheetExport::class,
            'fields' => [
                'field_1' => 'Поле 1',
                'field_2' => 'Поле 2',
                // ...
            ],
        ],
        // ...
    ];

    return Excel::download(new MultipleSheetsExport($sheets), 'import.xlsx');
}

В этом примере мы создаем массив листов с полями и передаем его в класс экспорта MultipleSheetsExport. После этого мы вызываем метод download() из фасады Excel и передаем ему экземпляр класса экспорта и имя файла.

Таким образом, вы можете легко импортировать файл Excel с разными полями на страницах с помощью Laravel и пакета "MaatwebsiteExcel".