【问题标题】:Laravel-Excel exported excel sheet doesn't convert date values in column to dateLaravel-Excel 导出的 Excel 工作表不会将列中的日期值转换为日期
【发布时间】:2014-11-12 18:44:55
【问题描述】:

我正在使用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 列自动转换为日期?

【问题讨论】:

    标签: php excel laravel-4 laravel-excel


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多