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_YYYYMMDD2
和 NumberFormat::FORMAT_DATE_TIME3
将变成 Custom
而不是 Date
和 Time
。所以我的问题是如何获得 date
和 time
类型设置正确的导出?
显然,当使用以下格式时,它会将列设置为正确的类型。
#
date
time
NumberFormat
FORMAT_DATE_YYYYMMDDSLASH
FORMAT_DATE_TIME8
当使用 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_YYYYMMDD2
和 NumberFormat::FORMAT_DATE_TIME3
将变成 Custom
而不是 Date
和 Time
。所以我的问题是如何获得 date
和 time
类型设置正确的导出?
显然,当使用以下格式时,它会将列设置为正确的类型。
# | date | time |
---|---|---|
NumberFormat | FORMAT_DATE_YYYYMMDDSLASH |
FORMAT_DATE_TIME8 |