2

我正在使用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导出文件时该列自动转换为日期?

4

1 回答 1

0

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

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

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

于 2014-11-13T16:11:57.073 回答