phpExcel xls 到 csv 的转换正在将日期更改为原始日期

phpExcel xls to csv conversion is changing the date to raw

我使用 phpExcel 将 xls 文件转换为 csv 的函数正在将日期字段中的值更改为原始值。我该如何避免这种情况发生?

函数如下

function convertXLStoCSV($infile,$outfile)
{
    $fileType = PHPExcel_IOFactory::identify($infile);
    $objReader = PHPExcel_IOFactory::createReader($fileType);

    $objReader->setReadDataOnly(true);   
    $objPHPExcel = $objReader->load($infile);    

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
    $objWriter->save($outfile);
}

xls 文件中的日期格式为:16.01.2017 00:00:00
输出 csv 文件的日期格式为:42751.0104166667

我已尝试更改文件 /Classes/PHPExcel/Style/NumberFormat。php

        self::$_builtInFormats[22] = 'm/d/yy h:mm'; 
        changed to 
        self::$_builtInFormats[22] = 'mm.dd.yyyy hh:mm:ss';

但这并没有起到什么作用

你的问题是

$objReader->setReadDataOnly(true);  

它明确告诉 PHPExcel 将单元格数据作为原始数据读取,没有任何样式信息(例如数字格式屏蔽)。

只需注释掉该行