我使用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
列自动转换为导出文件的日期?
答案 0 :(得分:0)
如果要在Carbon实例中返回额外的列,请将以下内容添加到模型中;
public function getDates(){
return array('created_at','updated_at','some_date');
}
这将自动将其作为Carbon的实例返回。所以在理论上,每当它试图打印出实例时,它应该打印成一个字符串。