大家好 我有一个问题,如何检测单元格值是否格式化到目前为止 当我上传日期值时,我使用此代码
$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
这是错误的值
任何人都可以帮我解决这个问题,在此先感谢
答案 0 :(得分:3)
请尝试这个,这应该可行,
if(PHPExcel_Shared_Date::isDateTime($data)){
$cellValue = $objWorksheet->getCellByColumnAndRow($col, $row);
$InvDate= $cellValue->getValue();
if(PHPExcel_Shared_Date::isDateTime($cell)) {
$InvDate = date($format, PHPExcel_Shared_Date::ExcelToPHP($InvDate));
}
}
答案 1 :(得分:2)
感谢您的帮助,但事实证明这是我问题的解决方案:
$data = $objWorksheet->getCellByColumnAndRow($col, $row);
if(!strtotime($data)) {
if(PHPExcel_Shared_Date::isDateTime($data)) {
$cellValue = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
$dateValue = PHPExcel_Shared_Date::ExcelToPHP($cellValue);
$dateh = date('Y-m-d',$dateValue);
} else {
$dateh = "";
} else {
$st = strtotime($data);
$dateh = date('Y-m-d',$st);
}
}
答案 2 :(得分:0)
并且因为我遇到了这个问题...我使用了strtotime方法,但是我通过mssql拉取数据进行处理,所以我就这样做了
if(!strtotime($r['effective_date'])) {
$r['effective_date'] = \Carbon\Carbon::parse(\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($r['effective_date']))->format('Y-m-d');
}