Laravel Excel 将日期和时间导出为自定义

Laravel Excel exports date and time as custom

当使用 Laravel Excel 3.1 导出数据时,它应该将日期格式化为日期和时间。但是日期和时间都变成了 Custom.

我有以下出口:

class Export implements FromView, WithEvents
{
    public static function afterSheet( AfterSheet $event ): void
    {
        $sheet = $event->getSheet();
        $sheet->formatColumn( 'H', NumberFormat::FORMAT_DATE_YYYYMMDD2 );
        $sheet->formatColumn( 'I', NumberFormat::FORMAT_DATE_TIME3 );
        $sheet->formatColumn( 'J', NumberFormat::FORMAT_DATE_TIME3 );
        $sheet->formatColumn( 'L', NumberFormat::FORMAT_TEXT );
        $sheet->formatColumn( 'M', NumberFormat::FORMAT_TEXT );
        $sheet->formatColumn( 'N', NumberFormat::FORMAT_TEXT );
        $sheet->formatColumn( 'O', NumberFormat::FORMAT_TEXT );
        $sheet->formatColumn( 'P', NumberFormat::FORMAT_TEXT );
        $sheet->formatColumn( 'Q', NumberFormat::FORMAT_TEXT );
    }
}

和视图:

<td>{{ \Carbon\Carbon::parse( $date->date )->format('Y-m-d') }}</td>
<td>{{ \Carbon\Carbon::parse($publication->start_time)->format('G:i') }}</td>
<td>{{ \Carbon\Carbon::parse($publication->end_time)->format('G:i') }}</td>

也试过:

class Export implements FromView, WithEvents
{
    public static function afterSheet( AfterSheet $event ): void
    {
        $sheet = $event->getSheet();
        $sheet->formatColumn( 'H', 'yyyy-mm-dd' );
        $sheet->formatColumn( 'I', 'h:mm' );
        $sheet->formatColumn( 'J', 'h:mm' );
        $sheet->formatColumn( 'L', NumberFormat::FORMAT_TEXT );
        $sheet->formatColumn( 'M', NumberFormat::FORMAT_TEXT );
        $sheet->formatColumn( 'N', NumberFormat::FORMAT_TEXT );
        $sheet->formatColumn( 'O', NumberFormat::FORMAT_TEXT );
        $sheet->formatColumn( 'P', NumberFormat::FORMAT_TEXT );
        $sheet->formatColumn( 'Q', NumberFormat::FORMAT_TEXT );
    }
}

使用 columnFormats 方法似乎不起作用,因为数据是从视图而不是 class 中的任何数据方法收集的。

格式确实适用于 NumberFormat::FORMAT_TEXT,但 NumberFormat::FORMAT_DATE_YYYYMMDD2NumberFormat::FORMAT_DATE_TIME3 将变成 Custom 而不是 DateTime。所以我的问题是如何获得 datetime 类型设置正确的导出?

显然,当使用以下格式时,它会将列设置为正确的类型。

# date time
NumberFormat FORMAT_DATE_YYYYMMDDSLASH FORMAT_DATE_TIME8