Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Phpexcel获取错误的日期_Php_Mysql_Date_Phpexcel - Fatal编程技术网

Phpexcel获取错误的日期

Phpexcel获取错误的日期,php,mysql,date,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']);

我正在使用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;   
$file\u name=clean\u uri($\u FILES['excel']['name']);
$file\u name='povijest\u.$file\u name;
$folder_s='upload_data/excel';
移动上传的文件($\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
$objPHPExcel=PHPExcel\u IOFactory::load('../'.$folder\u.'/'.$file\u name);
$allDataInSheet=$objPHPExcel->getActiveSheet()->toArray(null、true、true、true);
$highestcolumn=$objPHPExcel->getActiveSheet()->getHighestColumn();
$colNumber=PHPExcel_单元::columnIndexFromString($highestColumm);
$arrayCount=计数($allDataInSheet);
对于($i=4;$igetActiveSheet()->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);
出口

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

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

也有文档化的方法(例如
PHPExcel\u Shared\u Date::ExcelToPHP($msExcelSerializedTimestamp)

)用于在MS Excel时间戳和unix时间戳或DateTime对象之间进行转换,以及检查单元格是否包含日期

为什么要使用
toArray()
$allDataInSheet
中获取一个大数组,然后忽略它?……这会造成很大的内存开销,毫无目的您的意思是:“$datum=$objPHPExcel->getActiveSheet()->getCell('A'.$i)->getFormattedValue();”?我得到错误:“调用未定义的方法phpexcell\u Cell::getFormattedValue()…”
$objPHPExcel->getActiveSheet()->getCell('A'.$i)->getFormattedValue()
应该可以工作,如果它告诉你这个方法不存在,那么它是在撒谎,或者你输入了错误……但是开源的美妙之处在于,你可以查看phpexcell_Cell类,自己看看可用的方法,因为你面前的所有源代码仍然会得到相同的错误这…$timestamp=$datum/1000;$test=date(“d-m-Y”,$timestamp);我以为这是某种时间戳,但我弄错了日期。正如我的回答所解释的,这是某种时间戳……它是MS Excel时间戳,不是unix时间戳,也不是unix时间戳的1000倍……如果
getFormattedValue()
不起作用,那么不管怎样你都会遇到大问题,只有天知道你在运行什么,因为它肯定不是PHPExcel的标准版本。另一种方法是使用我提到的转换函数:
$datum=PHPExcel\u Shared\u Date::ExcelToPHP($objPHPExcel->getActiveSheet()->getCell($a.$I)->getValue());echo Date('Y-m-dh:i:s',$datum);