我正在尝试检查用户上传的 excel 文件是否具有正确的列/第一行/属性,然后再读入其他行。我将 Laravel 4 与MaatWebsite 的Laravel Excel 一起使用。
我创建了一个函数,允许用户通过导入 excel 文件来更新系统数据库的员工表。
现在正确的 excel 文件有 3 列:firstname
、lastname
和username
. 如果 excel 文件具有所有这些属性/列,我现在将读取以下每一行并验证每一行,到目前为止,这并不是我的问题的一部分。
但是,如果 excel 文件中不存在 3 个属性/列中的任何一个,我会忽略该请求并返回错误。
我尝试使用它,它获取lastname
属性:
$sample = Excel::selectSheetsByIndex(0)->load($readFile, function($reader){})->get(array("lastname"));
但是即使lastname
没有找到, $sample 仍然不为空,所以我无法检查是否lastname
存在。
如何检查属性/列是否存在/不存在?
更新:
如果属性行之后的第一行具有所有需要的属性,我选择的答案将非常有效。例如:如果它具有firstname
、lastname
和的值username
。
但是,如果first name
缺少第一个非属性行(引用列名的属性行)的值(或任何属性值),则提供的脚本将返回 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
处于循环的末尾,则该文件一次都没有具有所需的所有属性。这意味着文件为空、属性名称错误或没有任何有效行。简而言之,该文件无效,不应在系统中。