我正在使用 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
导出文件时,列会自动转换为日期吗?
最佳答案
如果您想将额外的列作为 Carbon 实例返回,请将以下内容添加到您的模型中;
public function getDates(){
return array('created_at','updated_at','some_date');
}
这将自动将其作为 Carbon 的实例返回。所以理论上,每当它试图打印出实例时,它应该被打印为一个字符串。
关于php - Laravel-Excel 导出的 Excel 工作表不会将列中的日期值转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26894240/