【问题标题】:PHPExcel Reader Date Format Issue - rangeToArrayPHPExcel 阅读器日期格式问题 - rangeToArray
【发布时间】:2013-09-22 22:59:55
【问题描述】:

我在使用 PHPExcel 读取 excel 时遇到日期格式问题。 即使我使用$objReader->setReadDataOnly(false); 获取单元格的格式,但对我不起作用。 这就是我从 Excel 中读取数据的方式。

$get_excel_data = $objPHPExcel->getActiveSheet()->rangeToArray("A1:".$highestColumn.$highestRow);

当我尝试打印日期时,它显示为 03/06/13,我尝试使用

转换为 mysl 日期格式
date('Y-m-d',PHPExcel_Shared_Date::ExcelToPHP($val[1])); // echoing 2036-03-06

但它不起作用,任何人都可以指导我解决这个问题吗?主要问题是我没有以数字格式 ( Excel ) 获取日期,而是将日期显示为 03/06/13,

【问题讨论】:

  • 那么单元格的实际值和格式掩码是多少?如您所建议的,如果 PHPExcel 中存在错误,那么如果希望我解决问题,这些细节将非常重要
  • @MarkBaker 我不确定这是否是一个错误,因为我使用 $objWorksheet->getCellByColumnAndRow(1, $i)->getValue() 和 $objPHPExcel- >getActiveSheet()->rangeToArray("A1:".$highestColumn.$highestRow) ,在第一种情况下,我正确获取了日期字段,但是这种情况下的日期不起作用,这就是我使用相同功能的原因。我希望你已经看到了我的回答。感谢您的评论

标签: php excel date


【解决方案1】:

我已经解决了日期问题

$get_excel_data = $objPHPExcel->getActiveSheet()->rangeToArray("A1:".$highestColumn.$highestRow);           
$i = 1; 
foreach($get_excel_data as $val) {
    //In my case, 2nd column is a date so that I format using 
    $date = date('Y-m-d',PHPExcel_Shared_Date::ExcelToPHP($objWorksheet->getCellByColumnAndRow(1, $i)->getValue()));  // array index 1              
}               

【讨论】:

  • var_dump(PHPExcel_Shared_Date::ExcelToPHP($objWorksheet->getCellByColumnAndRow(1, $i)->getValue())); 输出什么?
  • 那没关系。但是var_dump(PHPExcel_Shared_Date::ExcelToPHP($val[1])); 在您的问题中输出了什么?
  • 我使用了 echo date('Y-m-d',PHPExcel_Shared_Date::ExcelToPHP($val[1]));它与 2036-03-06 相呼应
  • 我看到了这个问题;我很感兴趣var_dump(PHPExcel_Shared_Date::ExcelToPHP($val[1])); 输出了什么;或者var_dump($val); 输出什么?
  • 03/06/13 这是现在的日期,以前我用过其他日期。我认为只有 rangeToArray 有问题。
【解决方案2】:

如果PHPExcel_Shared_Date::ExcelToPHP($val[1]); 返回03/06/13,那么这应该可以工作:

$date = new DateTime(PHPExcel_Shared_Date::ExcelToPHP($val[1]));
echo $date->format('Y-m-d');

echo date('Y-m-d', strtotime(PHPExcel_Shared_Date::ExcelToPHP($val[1])));

【讨论】:

  • 感谢您的回复,但它不起作用。我已经用另一种方式解决了。
  • 我已经编辑了我的答案,你误解了结果。对不起,。我将发布对我有用的答案。谢谢。
  • @Glavić,从问题的 cmets 看来,ExcelToPHP 正在输出时间戳整数。我认为DateTime 必须用"@".$timestamp 构造,当它是一个UNIX 时间戳时。
猜你喜欢
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-30
  • 1970-01-01
  • 2011-09-20
相关资源
最近更新 更多