【发布时间】:2015-02-12 09:19:01
【问题描述】:
大家好 我对如何检测单元格值是否格式化为日期有疑问 当我上传日期值时,我使用此代码
$data = $objWorksheet->getCellByColumnAndRow($col, $row);
当单元格值被格式化为日期时,值是 $data = 27474 当不是 $data = 12/2/1983 然后我使用这个代码来格式化他们的日期
if(PHPExcel_Shared_Date::isDateTime($data)){
$cellValue = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
$dateValue = PHPExcel_Shared_Date::ExcelToPHP($cellValue);
$dob = date('Y-m-d',$dateValue);
}
现在,问题是当 $data 在日期格式化时,此代码正常,但当 $data 未格式化时,值是 $data = 2036-02-18,这是错误值
谁能帮我解决这个问题提前谢谢
【问题讨论】:
-
使用
PHPExcel_Shared_Date::isDateTime()是识别单元格是否包含日期值的正确方法,但还应注意,如果已加载文件,则将readDataOnly设置为true,则无法识别日期值,因为它只是将日期值与正常浮点值区分开来的数字格式掩码 -
你的另一个选择是调用
getFormattedValue()而不是getValue()一旦你知道一个单元格包含一个日期,尽管这会将日期作为格式化字符串返回(使用与它相同的格式MS Excel),这可能并不总是与您希望在脚本中格式化的方式一致 -
但是如果单元格只包含一个字符串值(例如)
"12-Feb-2015",那么这只是一个字符串,PHPExcel不会将其识别为日期 -
@MarkBaker 感谢您的评论,我意识到 getFormattedValue()
标签: php phpexcel phpexcelreader