2016-01-10 3 views
1

У меня есть следующий код, чтобы прочитать XLSX таблицу, но это, кажется, есть некоторые проблемы:Как пройти через все поля из таблицы, используя Laravel-Excel

Excel::load($filePath, function ($reader) use ($classId) { 
     // Getting all results 
     $reader->get(); 
     // Loop through all sheets 
     $reader->each(function ($sheet) use ($classId) { 
      // Loop through all rows 
      $sheet->each(function ($row) use ($classId) { 
        if (filter_var($row, FILTER_VALIDATE_EMAIL)) { 
         $invitation = new Invitations(); 
         $invitation->email = $row; 
         $invitation->status = 0; 
         $invitation->class_id = $classId; 
         $invitation->token = str_random(10); 
         $invitation->sent = 0; 
         $invitation->created_at = time(); 
         $invitation->save(); 
        } 
      }); 
     }); 
    }); 

Проблема с этим кодом не все поля проверяются на ex: у меня есть адрес электронной почты в поле A5, и у меня есть другой адрес электронной почты на D7 и т. д. ... значение D7 только не A5 ... если я поместил все в один столбец, скажем B1, B2, B3 и т. Д., Он отлично работает. Как я могу заставить его работать везде, где есть адрес электронной почты в любом поле, и вставить его в db.

ответ

0

Я разрешил его, изменив к этому:

Excel::load($filePath, function ($reader) use ($classId) { 
     // Getting all results 
     $reader->get()->toArray(); 
     $reader->noHeading(); 
     $reader->ignoreEmpty(); 
     // Loop through all sheets 
     $reader->each(function ($sheet) use ($classId) { 
      // Loop through all rows 
      $sheet->each(function ($row) use ($classId) { 
       foreach ($row as $value) { 
        if (filter_var($value, FILTER_VALIDATE_EMAIL)) { 
         $invitation = new Invitations(); 
         $invitation->email = $value; 
         $invitation->status = 0; 
         $invitation->class_id = $classId; 
         $invitation->token = str_random(10); 
         $invitation->sent = 0; 
         $invitation->created_at = time(); 
         $invitation->save(); 
        } 
       } 
      }); 
     }); 
    }); 

и переменил «force_sheets_collection» => верно в конфе, так что я всегда имею одинаковую отдачу, где есть один лист или больше ...

Смежные вопросы