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

标签 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导出文件时,列会自动转换为日期吗?

最佳答案

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

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

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

关于php - Laravel-Excel 导出的 Excel 工作表不会将列中的日期值转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26894240/

相关文章:

php - 将元素追加到数组并跳过某些值(如果存在)[PHP]

php - 将一个表链接到第二个表并多次将数据从第一个表拉到第二个表

excel - 如何使用excel vba获取HTML网页的特定属性

javascript - CKEditor 是否可以添加马拉雅拉姆语

php - Ajax settimeout从php/mysql读取状态

Excel VBA 错误取决于列的筛选方式

excel - ActiveX 按钮更改选定图表的大小

php - 使用 filter 方法过滤 Laravel Eloquent 集合

php - laravel 和图像干预,如何将所有图像转换为 jpeg 并从 Input::file 保存?

javascript - 在自定义验证中使用 Angular JS + Laravel 检查当前密码