Я пытаюсь проверить, имеет ли загруженный пользователем файл excel правильные столбцы / первую строку / атрибуты перед чтением в другие строки. Я использую Laravel 4 с MaatWebsite Laravel Excel.
Я создал функцию, которая позволяет пользователям обновлять таблицу сотрудников в базе данных системы, импортировав файл Excel.
Теперь правильный файл Excel имеет, скажем, 3 столбца: firstname
, lastname
и username
. Если в файле Excel есть все эти атрибуты / столбцы, я теперь буду читать каждую из следующих строк и проверять каждую строку, что на самом деле не является частью моей проблемы на данный момент.
Но если какой-либо из трех атрибутов / столбцов отсутствует в файле Excel, я проигнорирую запрос и верну ошибку.
Я пробовал использовать это, которое получает атрибут lastname
:
$sample = Excel::selectSheetsByIndex(0)->load($readFile, function($reader){})->get(array("lastname"));
Но даже несмотря на то, что lastname
не был найден, $ sample по-прежнему не равно нулю, поэтому я не смогу проверить, присутствует lastname
или нет.
Как я могу проверить наличие / отсутствие атрибутов / столбцов?
ОБНОВЛЕНИЕ:
Выбранный мною ответ будет работать отлично, если в первой строке после строки атрибутов будут все необходимые атрибуты. Например: если в нем есть значения для firstname
, lastname
и username
.
Но если в случаях, когда значение first name
(или любое значение attritbute в этом отношении) первой строки без атрибутов (строка атрибутов, относящаяся к именам столбцов) отсутствует, предоставленный сценарий вернет false, даже если в файле Excel есть все атрибуты firstname
, lastname
и username
.
Итак, я изменил сценарий на это:
- Сначала я прочитал файл Excel. Я также объявил логическую переменную, чтобы отмечать, действителен ли файл Excel или нет.
$excelChecker = Excel::selectSheetsByIndex(0)->load('path/to/file', function($reader){})->get()->toArray();
$excelIsValid = false;
Затем я просматриваю все результаты и проверяю, все ли требуемые значения (
firstname
,lastname
иusername
) установлены или присутствуют хотя бы один раз.foreach($excelChecker as $ex){ if(isset($ex["lastname"]) && isset($ex["firstname"]) && isset($ex["username"])){ $excelIsValid = true; } }
Пояснение:
Если $excelIsValid
по-прежнему false
в конце цикла, значит, файл ни разу не имел всех требуемых атрибутов. Это либо означает, что файл пуст, имеет неправильные имена атрибутов или не имеет допустимой строки. Короче говоря, файл недействителен и его не должно быть в системе.