如何使用PHPExcel库从excel中获取日期

2022-08-30 15:08:54

我正在尝试使用PHPExcel从excel中获取Date。但是我没有得到日期,我得到的字符串值不是1970年的秒。

我尝试过的代码是

$InvDate=trim($excel->getActiveSheet()->getCell('B' . $i)->getValue());

答案 1

尝试使用

$cell = $excel->getActiveSheet()->getCell('B' . $i);
$InvDate= $cell->getValue();
if(PHPExcel_Shared_Date::isDateTime($cell)) {
     $InvDate = date($format, PHPExcel_Shared_Date::ExcelToPHP($InvDate)); 
}

附言

@DiegoDD:应该提到$format是日期所需的格式。例如:

 $InvDate = date($format = "Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($InvDate)); 

P.P.S. 2019 看看答案 @gabriel-lupu, 与新版本的 PhpOffice https://stackoverflow.com/a/45070205/426533


答案 2

对于日期,getValue() 应返回一个浮点数,这是该日期/时间的 Excel 序列化时间戳值...我怀疑是你的修剪()把它扔到字符串上。实际值是自 1900 年 1 月 1 日(或 1904 年 1 月 1 日,具体取决于电子表格使用的日历)以来的天数。

调用 getFormattedValue() 或 getCalculatedValue() 而不是 getValue() 应根据单元格的数字格式掩码返回格式化为人类可读字符串的日期。

或者,Sergey的解决方案测试单元格是否具有日期/时间数字格式掩码,并调用适当的帮助器方法将Excel序列化时间戳转换为unix时间戳,然后使用正常的PHP日期函数根据$format的值将其格式化为人类可读。PHPExcel_Shared_Date::ExcelToPHPObject() 有一个类似的帮助器方法,它将 Excel 序列化时间戳转换为 PHP DateTime 对象


推荐