我有一个要求,我需要确保用户上传的Excel文件中没有重复的行。 2个特定列。
示例:
在下面的代码段中,我要标记出第1行和第2行包含COMPANY_CODE
和CLERK_CODE
的重复组合:
如果找到这样的重复组合,我想拒绝导入的整个文件,并让用户知道问题出在哪里。
有任何线索吗?
答案 0 :(得分:0)
不确定Maat / Laravel Excel是否可以轻松解决此问题。因此,我继续创建了键为两个列的串联的关联数组,我不想在Excel中重复。
然后我使用一个foreach循环手动检查该键是否存在于关联数组中,这意味着Excel中存在重复项。
下面提供一些示例代码供参考:
$array = Excel::toArray(new MyExcelImport(), request()->file);
$assoc_array = array();
foreach ($array[0] as $key => $value) {
$new_key = $value['company_code'] . $value['clerk_code'];
// Presence of combination of company_code and clerk_code in the assoc_array indicates that
// there is duplicate entry in the Excel being imported. So, abort the process and report this to user.
if (array_key_exists($new_key, $assoc_array)) {
return response()->json("Combination of company_code: " .
$value['company_code'] .
" and clerk_code: " .
$value['clerk_code'] .
" is duplicate in the file being imported. Please correct same and retry upload.", 422);
}
$assoc_array[$new_key] = $value;
}
希望这可以帮助有类似需求的人!