Phpexcel获取错误的日期
我正在使用phpexcel将excel文档导入网站。我无法获取日期格式 日期格式为dd.mm.Y,但在获得cellValue后,我得到samo随机数(float(42391)) 这是我的代码: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']);
$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);