Phpexcel 得到错误的日期


Phpexcel getting wrong date

我正在使用phpexcel将excel文档导入网站。我在获取日期格式时遇到问题。

日期格式为 dd.mm.Y,但在获得单元格值后,我得到 samo 随机数 ( float(42391) )

这是我的代码:

$datum = $objPHPExcel->getActiveSheet()->getCell('A'.$i)->getValue();

这个应该得到日期?

            $file_name = clean_uri($_FILES['excel']['name']);
            $file_name = 'povijest_'.$file_name;
            $folder_s = 'upload_data/excel';
            move_uploaded_file($_FILES['excel']['tmp_name'], '../'.$folder_s.'/'.$file_name);
            $objPHPExcel = PHPExcel_IOFactory::load('../'.$folder_s.'/'.$file_name);
            $allDataInSheet = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true); 
            $highestColumm = $objPHPExcel->getActiveSheet()->getHighestColumn();
            $colNumber = PHPExcel_Cell::columnIndexFromString($highestColumm);
            $arrayCount = count($allDataInSheet); 
for($i=4;$i<=$arrayCount;$i++){
                    $datum = $objPHPExcel->getActiveSheet()->getCell('A'.$i)->getValue();
                    $prva = $objPHPExcel->getActiveSheet()->getCell('C'.$i)->getValue();
                    $zadnja = $objPHPExcel->getActiveSheet()->getCell('D'.$i)->getValue();
                    $najvisa = $objPHPExcel->getActiveSheet()->getCell('E'.$i)->getValue();
                    $najniza = $objPHPExcel->getActiveSheet()->getCell('F'.$i)->getValue();
                    $prosjecna = $objPHPExcel->getActiveSheet()->getCell('G'.$i)->getValue();
                    $promjena = $objPHPExcel->getActiveSheet()->getCell('H'.$i)->getValue();
                    $broj_transakcija = $objPHPExcel->getActiveSheet()->getCell('I'.$i)->getValue();
                    $kolicina = $objPHPExcel->getActiveSheet()->getCell('J'.$i)->getValue();
                    $promet = $objPHPExcel->getActiveSheet()->getCell('K'.$i)->getValue();  
                    var_dump($datum); 
                    exit;   

它确实得到了日期.....这不是一个随机数,这是一个MS Excel序列化的日期时间戳。就像您可以在 PHP 中使用 unix 时间戳,然后使用 date() 函数设置其格式一样,MS Excel 使用自己的时间戳值,该值是自 1900 年 1 月 1 日(如果在 Mac 上创建,则为 1904 年 1 月 1 日)以来的天数。要以格式化显示它,您需要应用数字格式掩码。

Cell 的 getValue() 方法将从单元格返回原始值,但getFormattedValue()将返回应用了数字格式掩码的值

还有记录在案的方法(例如 PHPExcel_Shared_Date::ExcelToPHP($msExcelSerializedTimestamp)) 用于在 MS Excel 时间戳和 unix 时间戳或日期时间对象之间进行转换,以及检查单元格是否包含日期