我正在使用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 时间戳或日期时间对象之间进行转换,以及检查单元格是否包含日期