繁体   English   中英

PHPExcel将xls DATETIME更改为数字

[英]PHPExcel changes xls DATETIME to numbers

当我将.xls文件上传到PHPExcel时,我想读取原始数据。
我读到有关使用“ getValue()”的信息,它应该对其进行修复。
但就我而言不是。

所以在.xls中我有一列:2015-10-08 11:31
当我使用PHPExcel处理它时,我得到:42285.47993055556

因为PHPExcel首先读取文件,所以我不能使用PHP来创建DATETIME对象?

PHP

for ($row = 2; $row <= $highestRow; ++ $row) {
$val=array();
    for ($col = 0; $col < $highestColumnIndex; ++ $col) {
        $cell = $worksheet->getCellByColumnAndRow($col, $row);
        $val[] = $cell->getValue();

我该如何解决?

扔了被接受的answear,我得到了下面的代码为我工作:

for ($row = 2; $row <= $highestRow; ++ $row) {
  $val=array();
  for ($col = 0; $col < $highestColumnIndex; ++ $col) {
    $cell = $worksheet->getCellByColumnAndRow($col, $row);
    $val[] = $cell->getValue();
  }//close 2nd for loop
  //Create and convert xls date to php date
  $val[10] = PHPExcel_Shared_Date::ExcelToPHPObject($val[10]);
  $val[10] = $val[10]->format('Y-m-d H:i:s');
  //query stuff...
}//close first for loop    

没有PHPExcel不会更改它。...它已经是一个数字

MS Excel将日期/时间存储为自1900年1月1日以来(或如果使用Mac日历, 42285.47993055556 1904年1月1日)的天数作为序列化的时间戳。...该值42285.47993055556是与2015-10-08 11:31:06对应的Excel序列化的时间戳2015-10-08 11:31:06 然后,存储该值的单元格具有数字格式代码,该代码会将其转换为该日期/时间的人工表示形式。 如果更改该掩码,它将更改该值的可见外观,但是基础的序列化值保持不变。

如果你这样做

$val[] = $cell->getFormattedValue();

然后PHPExcel将数字格式掩码应用于该序列化的日期/时间戳,并基于存储在Excel文件中的掩码返回包含该日期的人类可读格式的字符串。

如果你这样做

$val[] = PHPExcel_Shared_Date::ExcelToPHP($cell->getValue());

然后PHPExcel将返回一个unix时间戳,您可以将其传递给PHP date()函数进行格式化

如果你这样做

$val[] = PHPExcel_Shared_Date::ExcelToPHPObject($cell->getValue());

然后,PHPExcel将返回一个PHP DateTime对象,您可以对其进行格式化,然后使用DateTime对象format()方法进行format()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM