dcat admin 使用Maatwebsite导入excel批量创建数据怎么返回每一行是否成功导入并提示
时间: 2024-02-01 15:13:15 浏览: 144
从网站批量导入数据到Excel范例
4星 · 用户满意度95%
在使用 Maatwebsite 导入 excel 批量创建数据时,可以通过实现 `WithValidation` 接口,并重写 `rules()` 方法来定义数据验证规则。同时,也可以通过实现 `WithHeadingRow` 接口并重写 `headingRow()` 方法来指定 excel 表格的表头行,以便在处理数据时可以自动将表头行跳过。
接下来,在处理数据时,可以在循环中逐行判断数据是否导入成功,并将结果返回给用户。示例代码如下:
```php
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithValidation;
class ImportData implements ToCollection, WithHeadingRow, WithValidation
{
private $successCount = 0; // 成功导入的行数
private $failCount = 0; // 失败导入的行数
private $errors = []; // 失败的行及原因
public function collection(Collection $rows)
{
foreach ($rows as $row) {
// 处理每一行数据,根据需要进行数据验证和创建
if (数据创建成功) {
$this->successCount++;
} else {
$this->failCount++;
$this->errors[] = [
'row' => $row->toArray(),
'reason' => '数据创建失败的原因'
];
}
}
}
public function rules(): array
{
// 返回数据验证规则
}
public function getSuccessCount()
{
return $this->successCount;
}
public function getFailCount()
{
return $this->failCount;
}
public function getErrors()
{
return $this->errors;
}
}
```
最后,在控制器中调用导入数据的方法,并将成功和失败的行数及导入失败的原因返回给用户即可。示例代码如下:
```php
public function import(Request $request)
{
$file = $request->file('file');
$import = new ImportData();
Excel::import($import, $file);
$successCount = $import->getSuccessCount();
$failCount = $import->getFailCount();
$errors = $import->getErrors();
return [
'successCount' => $successCount,
'failCount' => $failCount,
'errors' => $errors
];
}
```
阅读全文