Laravel Excel - 导入日期验证

Posted

技术标签:

【中文标题】Laravel Excel - 导入日期验证【英文标题】:Laravel Excel - Import date validation 【发布时间】:2020-06-11 08:50:07 【问题描述】:

我正在开发一个 Laravel 项目,其中一项功能是将 CSV/Excel 文件加载到表格中。为此,我使用 Laravel-Excel 包 (https://docs.laravel-excel.com/3.1/imports/)。

我成功地加载了 CSV 文件,但我遇到了 Excel 文件问题,尤其是日期验证问题。基本上验证总是告诉我日期不是日期(但实际上是),我尝试了不同的格式但没有任何变化。

这是我的代码:

OrdinanzaImport.php(这是模型导入)

class OrdinanzaImport implements ToModel, WithValidation, WithHeadingRow

    public function model(array $row)
    
        return new Ordinanza([
            'numero_verbale' => $row['numero_verbale'],
            'data_verbale'   => $row['data_verbale'],    ////here is the date field
            'cognome'        => $row['cognome'],
            'nome'           => $row['nome'],
            'codice_fiscale' => $row['codice_fiscale'],
            'citta'          => $row['citta'],
            'provincia'      => $row['provincia'],
            'data_notifica'  => $row['data_notifica'],
        ]);
    

    public function rules(): array
    
        return [
            'numero_verbale' => 'required|numeric|unique:ordinanze',
            'data_verbale'   => 'required|date:ordinanze',            ////here is the date validation
            'cognome'        => 'required|min:1|max:50:ordinanze',
            'nome'           => 'required|min:1|max:50:ordinanze',
            'codice_fiscale' => 'nullable|alpha_num|size:16:ordinanze', 
            'citta'          => 'required|min:1|max:50:ordinanze',
            'provincia'      => 'nullable|min:1|max:50:ordinanze',
            'data_notifica'  => 'nullable|date:ordinanze',
        ];
    

controller.php

Excel::import(new OrdinanzaImport, $request->file('file'), null, \Maatwebsite\Excel\Excel::XLSX);

我还尝试使用我在包问题上找到的以下代码,但没有:

'data_verbale' => \phpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($row['data_verbale']),

如果您要检查,这是 Excel 文件:https://filebin.net/yhuuhqb579g3qyle

如何解决这个问题?

谢谢!

【问题讨论】:

【参考方案1】:

你能试试这个吗? 'data_verbale' => \DateTime::createFromFormat('d-m-Y', $row['data_verbale'])->format('Y-m-d'),

让我知道它的作用!

【讨论】:

谢谢,但我得到了同样的验证错误。你知道是否有某种方法可以调试 $row['data_verbale'] 的实际内容以更好地理解问题吗? @nicoblue 我认为这无关紧要,因为验证将首先运行,而 laravel excel - 日期验证无法识别这种日期格式。所以你可能有两个选择。第一个:不验证日期。第二个:把它带到 laravel-excel 上。告诉我!

以上是关于Laravel Excel - 导入日期验证的主要内容,如果未能解决你的问题,请参考以下文章

Laravel PHPExcel 将日期转换为双精度

如何在 Laravel Excel 中格式化日期?

Laravel 使用 PhpOffice 导入导出 Excel

在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能

laravel框架excel 的导入导出功能

在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能(转)