从PHP Excel中的Excel Sheet获取格式化的日期单元格

时间:2015-04-04 12:21:17

标签: php excel

我使用Excel Reader读取了Excel表单,现在我无法显示单元格信息,因为它是格式化单元格。它是一个数据单元。

在php中如何在excel表中显示日期?

在Excel中单元格类似于:10-Apr-1956 (Date formatted)

现在在php中显示如下:20555 (the general form)

如何在php中以日期的形式显示?

2 个答案:

答案 0 :(得分:0)

20555是日期的Excel表示形式。它不是一般形式,与unix时间戳类似。我理解它是自1900年1月1日以来的天数。

所以你需要有一个可以转换它的功能。我认为像下面这样的东西可以起作用:

function convertExcelDateNumberToUnixTimestamp($dateNumber){
    /*     Jan 1 1900  + [number of days in seconds] */
    return -2208988800 + (24 * 60 * 60 * $dateNumber);
}

function formatExcelDateNumberToDate($dateNumber) {
    /*Where 'l jS \of F Y' is whatever format you want:*/
    return date('l jS \of F Y', convertExcelDateNumberToUnixTimestamp($dateNumber);
}

使用第一个函数,您可以使用响应来构造DateTime对象。

答案 1 :(得分:0)

Excel将日期和时间存储为表示自1900年1月1日以来的日期的数字,以及24小时工作日的小数部分。

至于解决方案,您可以使用以下代码段

$excel_date = 20555; // Serialized form of 10-Apr-1956
$processDate = $excel_date - 25569;
$dateVal = strtotime("+$processDate days", mktime(0,0,0,1,1,1970));
echo date('d M Y', $dateVal);