Экспортированный лист Excel в Laravel-Excel не преобразует значения даты в столбце в дату

Я использую laravel-excel для экспорта данных из моей базы данных на лист Excel. Столбцы, содержащие даты, не интерпретируются как даты в Excel, поэтому, когда я иду импортировать этот файл Excel с помощью laravel-excel, эти столбцы не анализируются и не форматируются правильно.

Примерная таблица:

table name: items
id  |   name    | some_date
===========================
1     Boxes       2014-11-13 17:00:00
2     Pickles     2016-12-01 13:30:00
...

Мой код Laravel:

Excel::create('SomeTitle', function($excel) {

    $items = Item::all()->toArray();

    $excel->sheet('SheetName', function($sheet) use($items) {
        $sheet->fromArray($items, null, 'A1', true);
    });
})->export('xls');

Теперь в экспортированном файле Excel столбец C (который является «some_date») будет содержать дату типа 2014-11-13 17:00:00, но Excel не распознает это как дату, поэтому, когда я импортирую плитку с помощью laravel-excel, она не будет автоматически преобразован в экземпляр Carbon.

Когда я использую $sheet->setColumnFormat(array('C' => 'yyyy-mm-dd')); и снова импортирую файл Excel, laravel-excel теперь распознает и преобразует дату в экземпляр Carbon, но дата, время и дни будут полностью отключены!

Единственный способ, которым Excel распознает ячейки в столбце как даты, - это щелкнуть столбец, а затем щелкнуть. Затем Excel автоматически преобразует его в дату.

Как я могу обеспечить автоматическое преобразование столбца some_date в дату при экспорте файла?


person chipit24    schedule 12.11.2014    source источник


Ответы (1)


Если вы хотите вернуть дополнительные столбцы как экземпляры Carbon, добавьте в свою модель следующее:

public function getDates(){
    return array('created_at','updated_at','some_date');
}

Это автоматически вернет его как экземпляр Carbon. Поэтому теоретически всякий раз, когда он пытается распечатать экземпляр, он должен быть распечатан как строка.

person Matt Burrow    schedule 13.11.2014