如何在PHPExcel中将单元格值格式化为日期


How do i format cell value as date in PHPExcel?

我想在web中输出excel文件中的数据。excel中的一个单元格被格式化为日期,输出时返回如下:

A000001 |   John Doe      | DR | 41456 | 41465<--  // this should be date
A000002 |   Philip Moris  | CP | 41456 | 41465     // formatted as yyyy-mm-dd

require_once("controller/xls/Classes/PHPExcel/IOFactory.php");
$objPHPExcel = PHPExcel_IOFactory::load($filer);
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) 
{
    $worksheetTitle     = $worksheet->getTitle();
$highestRow         = $worksheet->getHighestRow(); // e.g. 10
$highestColumn      = $worksheet->getHighestColumn(); // e.g 'F'
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$nrColumns = ord($highestColumn) - 64;
echo '<table>';
for ($row = 5; $row <= $highestRow; ++ $row) 
{
echo '<tr>';
     for ($col = 1; $col < $highestColumnIndex; ++ $col)
     {
    $cell = $worksheet->getCellByColumnAndRow($col, $row);
    $val = $cell->getValue();
    echo '<td>'.$val.'</td>';
     }
echo '</tr>';
}
echo '</table>';
}

现在是unix时间吗?如果是,当我使用getCellByColumnAndRow时,我该如何格式化它?我还将把它存储在mysqldb中。Tnx。

这是一个Excel时间戳值,一个浮点值,包含自1900年1月1日以来的天数(如果电子表格文件设置为使用Mac日历而不是Windows日历,则为1904年1月)。

使用

$cell->getFormattedValue();

将根据单元格格式掩码将值返回为格式化为日期的字符串。

或者,您可以使用PHPExcel_Shared_Date::ExcelToPHP()PHPExcel_Shared_Date::ExcelToPHPObject()方法将Excel浮点值转换为unix时间戳或PHP DateTime对象,然后使用适当的PHP函数/方法以您喜欢的任何日期格式生成字符串