Laravel Excel 正在将日期从标题转换为一些数字

Laravel Excel is converting dates from heading into some numbers

我有一个与 Laravel Excel 有关的问题。我的标题充满了日期,例如:2018-05-23。但是当我使用 excel 扩展阅读它时:

 $data = Excel::load($request['file'], function($reader) {})->get();

该扩展没有将标题日期视为日期。相反,它将日期转换为一些数字 - 例如:43243.

这里是 sheet 的 dd:

重要说明:当日期在正常行中(不在标题中)时,日期转换良好。


版本 Laravel Excel (maatwebsite/excel) - 2.1.0
Laravel 的版本 - 5.5

我想是因为 ExcelParser。它将日期 header 字段转换为一些随机数。

为了满足您的要求,请在双引号内添加 header 列。

示例:“2018-05-23”

https://github.com/Maatwebsite/Laravel-Excel/blob/2.1/src/Maatwebsite/Excel/Parsers/ExcelParser.php#L284

数字来自 excel 本身,日期存储在 excel 中作为数值。 http://www.cpearson.com/excel/datetime.htm

对于Laravel框架5.6maatwebsite/excel 包版本 3.1,将日期从 excel 数字转换为正常日期格式,此功能 PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($dateFromExcel) 可以使用。它接受整数(excel 日期)和 returns DateTime 对象。

可以在此处找到更多信息https://github.com/Maatwebsite/Laravel-Excel/issues/1832

maatwebsite package insert ' 在日期之前。 为了解决这个问题

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 列