gpt4 book ai didi

laravel - 如何检查 Excel 文件的第一行或第一列在 Laravel Excel 中是否有效?

转载 作者:行者123 更新时间:2023-12-02 06:58:40 25 4
gpt4 key购买 nike

我正在尝试检查用户上传的 excel 文件是否具有正确的列/第一行/属性,然后再读取其他行。我将 Laravel 4 与 MaatWebsite's 一起使用Laravel Excel。

我创建了一个功能,允许用户通过导入 excel 文件来更新系统数据库的员工表。

现在正确的 excel 文件有 3 列:firstnamelastnameusername。如果 excel 文件具有所有这些属性/列,我现在将读取以下每一行并验证每一行,到目前为止这并不是我的问题的一部分。

但如果 3 个属性/列中的任何一个不存在于 excel 文件中,我将忽略请求并返回错误。

我试过使用它,它获得了 lastname 属性:

$sample = Excel::selectSheetsByIndex(0)->load($readFile, function($reader){})->get(array("lastname"));

但即使 lastname 还没有找到,$sample 仍然不为空,所以我无法检查 lastname 是否存在。

如何检查属性/列是否存在?

更新:

如果属性行之后的第一行包含所有需要的属性,我选择的答案将非常有效。例如:如果它具有 firstnamelastnameusername 的值。

但是,如果第一个非属性行(引用列名的属性行)的名字值(或与此相关的任何属性值)丢失,则提供的脚本将返回 false,即使 excel 文件具有所有 firstnamelastnameusername 属性。

所以我将脚本修改为:

  1. 首先,我阅读了 excel 文件。我还声明了一个 bool 变量来标记 excel 文件是否有效。

$excelChecker = Excel::selectSheetsByIndex(0)->load('path/to/file', function($reader){})->get()->toArray();

$excelIsValid = false;
  1. 然后我遍历所有结果并检查是否至少一次,所有必需的值(firstnamelastnameusername) 已设置或存在。

    foreach($excelChecker as $ex){

    if(isset($ex["lastname"]) && isset($ex["firstname"]) && isset($ex["username"])){
    $excelIsValid = true;
    }
    }

解释:

如果 $excelIsValid 在循环结束时仍然是 false,那么文件一次都没有拥有所需的所有属性。这意味着文件为空、属性名称错误或没有任何有效行。简而言之,该文件无效,不应该在系统中。

最佳答案

我准备了这个示例脚本:

Route::get('/', function() {

$isError = false;

Excel::load('file.xls', function($reader) use (&$isError) {

$firstrow = $reader->first()->toArray();

if (isset($firstrow['firstname']) && isset($firstrow['lastname']) && isset($firstrow['username'])) {
$rows = $reader->all();
foreach ($rows as $row) {
echo $row->firstname.' '.$row->lastname.' '.$row->username."<br />";
}
}
else {
$isError = true;

}

});
if ($isError) {
return View::make('error');
}
});

脚本加载文件并检查是否有您想要的列。它不会检查是否有更多列 - 当然,如果您愿意,可以添加额外检查 - count($firstow) == 3。如果有错误,它会将 $isError 设置为 true 并在路由中显示一个模板。

关于laravel - 如何检查 Excel 文件的第一行或第一列在 Laravel Excel 中是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26032014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com