在Laravel-Excel中,您可以使用Validation
规则和onEachSheet()
方法来处理多页并获取验证错误消息。以下是一个示例代码,演示如何实现这个功能:
首先,您需要在控制器中定义一个验证规则,以及一个处理每个工作表的回调函数:
use Maatwebsite\Excel\Validators\ValidationException;
use Maatwebsite\Excel\Concerns\WithValidation;
class ImportController extends Controller implements WithValidation
{
public function rules(): array
{
return [
'0' => 'required',
'1' => 'required',
// 添加其他字段的验证规则
];
}
public function onEachSheet($sheet, $index)
{
try {
$data = $sheet->toArray();
// 执行验证规则
$this->validate($data, $this->rules());
// 处理工作表数据
// ...
} catch (ValidationException $e) {
$failures = $e->failures();
// 获取验证错误消息
foreach ($failures as $failure) {
$row = $failure->row();
$errors = $failure->errors();
// 处理错误消息
// ...
}
}
}
}
在上面的示例中,我们在控制器中实现了WithValidation
接口,并定义了一个rules()
方法来指定验证规则。然后,我们使用onEachSheet()
方法来处理每个工作表的数据。
在onEachSheet()
方法中,我们首先将工作表数据转换为数组,然后使用validate()
方法执行验证规则。如果验证失败,我们可以通过ValidationException
捕获异常,并使用failures()
方法获取验证错误消息。
您可以根据需要处理验证错误消息,例如记录日志、返回给用户等。
最后,您可以在导入过程中使用import()
方法来处理多页:
use Maatwebsite\Excel\Facades\Excel;
public function import()
{
Excel::import(new ImportController, 'your-file.xlsx');
}
在上面的示例中,我们使用Excel::import()
方法来导入Excel文件,并指定ImportController
作为处理器。
请确保您已经正确安装了laravel-excel
包,并根据您的需求进行相应的调整。
领取专属 10元无门槛券
手把手带您无忧上云