2017-04-08 100 views
-2

我试着用Laravel 5.4的PHPExcel导入Excel格式的DATE列文件。 PHPExcel将文件和输出日期读入双数。 PHP的date()函数无法转换为导入数据库的日期。Laravel PHPExcel将日期转换为双重

有没有人得到同样的问题?

更新:这是我的代码

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

在Excel列中的日期是2017年3月3日。输出是42797.0所以,date()函数不能工作。

+0

至少提供了你尝试过的东西?还提供了一个通过PHPExcel读取该列后得到的示例。 – Gal

+1

[使用PHP Excel进行Excel日期转换]可能的重复(http://stackoverflow.com/questions/11119631/excel-date-conversion-using-php-excel) – Gal

回答

0

在内部,MS Excel将日期存储为float/double,序列化时间戳(类似于Unix时间戳,但计算天数而不是秒数,并且具有不同的基准日期)。我对laravel的Maatwebsite包装不够熟悉,以解释为什么->formatDates(true)未将该时间戳转换为格式化的日期/时间,但PHPExcel确实提供了用于在Excel时间戳和格式化的日期/时间之间转换的本地功能(或实际上转换为unix timesstamps或datetime对象在\PHPExcel_Shared_Date类。

+0

对不起! “ - > formatDates(true)”是我在发布我的代码之前没有删除的错误。 –

0

谢谢你们的意见。我觉得自己比,我认为你考虑下面的代码导入Excel文件的日期列更容易的答案。

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

结果将打印为您的格式字符串dmY,mdY,...