Проверьте заголовок Excel перед началом импорта (Laravel Excel)

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

В моем контроллере у меня есть следующая

открытая функция prestoImport (Request $ request)

{
    $file = $request->file('file');
    Excel::import(new PrestoImport, $file);
}

, а в моем файле PrestoImport.php у меня есть следующее

public function collection(Collection $rows)
{
    foreach ($rows as $row)
    {
        // .... lectura e inserción de los datos
    }
}

Я не могу понять, куда должен идти код для проверки заголовка Excel, который должен содержать столбцы Code, Nat, Ud и Summary

0
задан 28.11.2019, 22:49
1 ответ

Твоя модель, должно быть, осуществляет интерфейс WithValidation, asГ - что tendrГ-схвати что-то как:

use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithValidation;

class PrestoImport implements ToModel, WithValidation{
   //...
}

, Чтобы санкционировать заголовки, предполагая, что ты ждешь, что заголовок всегда estГ© в первой линии, внутри твоего файла PrestoImport.php, serГ - во что-то как:

public function rules(): array
{
    return [

         // Siempre valida por lotes
         // Fila.columna
         '0.0' => 'in:Código',
         '0.1' => 'in:Nat',
         '0.2' => 'in:Ud',
         '0.3' => 'in:Resumen',

    ];
}

, Если не estГЎs в PHP 7 или начальнике, он только удаляет тип информации, ожидаемый от возврата:

public function rules(){
   //...
}

, Чтобы ловить ее excepciГіn, что generarГЎ, есть несколько форм, он состоит в том, чтобы заключать одну из них cГіdigo importaciГіn в одном try catch.

try {
    $file = $request->file('file');
    Excel::import(new PrestoImport, $file);
} catch (\Maatwebsite\Excel\Validators\ValidationException $e) {
     $fallas = $e->failures();

     foreach ($fallas as $falla) {
         $falla->row(); // fila en la que ocurrió el error
         $falla->attribute(); // el número de columna o la "llave" de la columna
         $falla->errors(); // Errores de las validaciones de laravel
         $falla->values(); // Valores de la fila en la que ocurrió el error.
     }
}
0
ответ дан 01.12.2019, 10:40