Phpexcel 得到错误的日期

标签 php mysql date phpexcel

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

日期格式是 dd.mm.Y 但在获取 cellValue 后我得到 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 日起(或 1904 年 1 月 1 日,如果在 Mac 上创建)。要以格式显示它,您需要应用数字格式掩码。

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

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

关于Phpexcel 得到错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34987866/

相关文章:

php - 使用 Laravel 5.2 记录失败的登录尝试

php - 用于绑定(bind)预处理语句结果的变量是否应该先初始化?

mysql - JPA 中的总时间字段值

php - 无法使用 php 从 mysql 列中检索具有日期和时间的唯一日期

php - 使用 mysql 和 php 从表中删除

javascript - 将 PHP 数组转换为 JS 变量

java - 如何将阿拉伯字符串日期转换为 java 8 日期对象?

Python-将一个时间段分割成多个固定长度的时间段

php - FosElasticBundle未分析字段

mysql - VB.net mySQL 插入查询