Laravel-Excel导出的Excel工作表不会将列中的日期值转换为日期

时间:2014-11-12 18:44:55

标签: php excel laravel-4 laravel-excel

我使用laravel-excel将数据库中的数据导出到Excel工作表。包含日期的列不会在Excel中解释为日期,因此当我使用laravel-excel导入此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列自动转换为导出文件的日期?

1 个答案:

答案 0 :(得分:0)

如果要在Carbon实例中返回额外的列,请将以下内容添加到模型中;

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

这将自动将其作为Carbon的实例返回。所以在理论上,每当它试图打印出实例时,它应该打印成一个字符串。