Laravel Excel is converting dates from heading into some numbers

Martin picture Martin · May 23, 2018 · Viewed 7.4k times · Source

I have a problem which is connected with Laravel Excel. I have heading filled with dates for example: 2018-05-23. But when I read it with excel extension by using:

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

The extension is not treating the heading dates as dates. Instead of that it converts the dates into some numbers - for example: 43243.

Here is dd of the sheet:

enter image description here

Important note: When the date is in a normal row (not in heading) then the date is converted well.


Version of Laravel Excel (maatwebsite/excel) - 2.1.0
Version of Laravel - 5.5

Answer

Jakhongir picture Jakhongir · Mar 13, 2019

The numbers come from excel itself, dates stored in excel as numeric values. http://www.cpearson.com/excel/datetime.htm

For Laravel framework 5.6 and maatwebsite/excel package version 3.1, to convert date from excel numbers to normal date format, this function PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($dateFromExcel) can be used. It accepts integer(excel date) and returns DateTime object.

More information can be found here https://github.com/Maatwebsite/Laravel-Excel/issues/1832