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

时间:2013-07-12 09:10:15

标签: php phpexcel

我想在网络中的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时如何格式化?我也将它存储在mysql db中。 TNX。

1 个答案:

答案 0 :(得分:4)

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

使用

$cell->getFormattedValue();

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

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