我想從使用PHPExcel的Excel中獲取日期。但我沒有得到日期,我得到的字符串值不是從1970年起的秒數。如何使用PHPExcel庫從excel中獲取日期
碼我曾嘗試是
$InvDate=trim($excel->getActiveSheet()->getCell('B' . $i)->getValue());
我想從使用PHPExcel的Excel中獲取日期。但我沒有得到日期,我得到的字符串值不是從1970年起的秒數。如何使用PHPExcel庫從excel中獲取日期
碼我曾嘗試是
$InvDate=trim($excel->getActiveSheet()->getCell('B' . $i)->getValue());
嘗試使用
$cell = $excel->getActiveSheet()->getCell('B' . $i);
$InvDate= $cell->getValue();
if(PHPExcel_Shared_Date::isDateTime($cell)) {
$InvDate = date($format, PHPExcel_Shared_Date::ExcelToPHP($InvDate));
}
附:
@DiegoDD:應該提到$格式是日期所需的格式。例如: -
$InvDate = date($format = "Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($InvDate));
對於日期的getValue()應該返回一個浮動,這對於日期/時間Excel的系列化時間戳值...我懷疑這是你的修剪()就是這樣鑄造的字符串。實際值是從1/1/1900(或1/1/1904取決於電子表格使用的日曆)以來的天數。
根據單元格的numberformatmask,調用getFormattedValue()或getCalculatedValue()而不是getValue()應該返回格式爲日期格式的日期。
或者,Sergey的解決方案測試單元是否有日期/時間numberformatmask並調用適當的幫助器方法將該Excel序列化時間戳轉換爲unix時間戳,然後使用正常的PHP日期函數將其格式化爲人類可讀的$格式的值。還有一個類似的helper方法PHPExcel_Shared_Date :: ExcelToPHPObject(),將一個Excel序列化的時間戳轉換爲PHP DateTime對象
在圖書館,PhpOffice的新版本中,處理這一功能是excelToDateTimeObject因此,新的代碼格式應是:
$cell = $excel->getActiveSheet()->getCell('B' . $i);
$InvDate= $cell->getValue();
if (PhpOffice\PhpSpreadsheet\Shared\Date::isDateTime($cell)) {
$InvDate = PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($InvDate);
}
只有當我能找到這2個月前!謝謝! – rafi
非常好:)謝謝 – mrfazolka
感謝它過去幾天的工作正常搜索 –