【问题标题】:Laravel PHPExcel convert date into doubleLaravel PHPExcel 将日期转换为双精度
【发布时间】:2017-04-08 12:35:50
【问题描述】:

我尝试使用 Laravel 5.4 导入一个带有由 PHPExcel 格式化为 DATE 的列的 excel 文件。 PHPExcel 将文件和输出日期读取为双数。 PHP 的 date() 函数无法转换成日期导入数据库。

有人遇到同样的问题吗?

更新:这是我的代码

Excel::filter('chunk')
                ->selectSheetsByIndex(1)
                ->load(config('excel.import.storage').$fileName)
                ->chunk(1000, function($rows) {
                    foreach ($rows as $i=>$row) {
                        dd($row->toArray());
                    }
            });

Excel 列中的日期是 03/03/2017。输出为 42797.0 所以,date() 函数不能工作。

【问题讨论】:

标签: laravel-5 phpexcel


【解决方案1】:

在内部,MS Excel 将日期存储为浮点数/双精度数、序列化时间戳(类似于 Unix 时间戳,但计算天数而不是秒数,并且具有不同的基准日期)。我对 laravel 的 Maatwebsite 包装器不够熟悉,无法解释为什么 ->formatDates(true) 没有将该时间戳转换为格式化的日期/时间,但 PHPExcel 确实提供了在 Excel 时间戳和格式化的日期/时间之间转换的本机功能(或者实际上到 \PHPExcel_Shared_Date 类中的 unix 时间戳或 DateTime 对象。

【讨论】:

  • 对不起! “->formatDates(true)”是我在发布代码之前没有删除的错误。
【解决方案2】:

感谢你们的 cmets。我发现自己的答案比我想象的要容易。您认为以下导入 Excel 文件的代码具有日期列。

Excel::selectSheetsByIndex(1)
                    ->load(config('excel.import.storage').$fileName, function ($reader){
                        $rows = $reader->all();
                        dd($rows[0]->ngay->format('Y-m-d'));
                    });

结果将打印为您的格式字符串 d-m-Y, m-d-Y, ...

【讨论】:

    猜你喜欢
    • 2014-04-24
    • 2019-03-18
    • 2017-09-30
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 2010-10-16
    相关资源
    最近更新 更多