我遇到了与Laravel Excel相关的问题。我的标题填写日期,例如:2018-05-23。但是当我用excel扩展名阅读它时使用:
$data = Excel::load($request['file'], function($reader) {})->get();
扩展名未将标题日期视为日期。而不是将日期转换为某些数字 - 例如:43243
。
以下是表单的dd
:
重要提示:当日期位于正常行(不在标题中)时,日期会很好地转换。
Laravel Excel版本(maatwebsite / excel) - 2.1.0
Laravel版本 - 5.5
答案 0 :(得分:2)
我认为由于ExcelParser。它将日期标题字段转换为一些随机数字。
因此,为了使其符合您的要求,请在双引号内添加列标题。
示例:“2018-05-23”
答案 1 :(得分:2)
数字来自excel本身,日期作为数字值存储在excel中。 http://www.cpearson.com/excel/datetime.htm
对于 Laravel 框架 5.6 和
maatwebsite / excel 软件包版本 3.1 ,要将日期从excel数字转换为正常日期格式,可以使用此功能PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($dateFromExcel)
。它接受整数(excel日期)并返回DateTime对象。
更多信息,请点击https://github.com/Maatwebsite/Laravel-Excel/issues/1832
答案 2 :(得分:0)
maatwebsite软件包在日期前插入“。 要解决此问题
class yourExport implements , WithMapping, WithCustomCsvSettings, WithColumnFormatting
{
.....
public function map($map): array
{
return [
Date::dateTimeToExcel($map->created_at),
...
];
}
public function columnFormats(): array
{
return [
'A' => NumberFormat::FORMAT_DATE_DDMMYYYY
];
}
}
其中 A 是日期所在的excel列