【问题标题】:I need to import an excel file into database using PHPExcel the issue is with the date我需要使用 PHPExcel 将 excel 文件导入数据库,问题在于日期
【发布时间】:2014-10-14 04:10:40
【问题描述】:

我需要使用 PHPExcel 将 excel 文件导入数据库,问题在于日期,日期可以是 excel 文件中的任何格式。

当 excel 文件中的日期格式为 12/12/2012 (m/d/y) 时,它会正确保存到数据库中,但如果 excel 文件中的格式日期是 24/11/2014(d/m/) y) 它上传空白 当 24/12/2012(d/m/y) 时,值为 2036-03-01

$data = $objWorksheet->getCellByColumnAndRow($col, $row);
if(PHPExcel_Shared_Date::isDateTime($data)){
  $cellValue = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
  $dateValue = PHPExcel_Shared_Date::ExcelToPHP($cellValue);

  $dob =  date('Y-m-d',$dateValue);                                         
} else{
  $datedata = "NULL";               
}

希望你能帮帮我,伙计们

【问题讨论】:

  • 当您以d/m/y 格式读取日期时,$dateValue 的值是多少?
  • @isim 的值为 -numbers,如 -454654643
  • 我的回答解决了您的问题吗?
  • 我已经搜索了你的答案,感谢你的帮助,但我的问题还没有解决,是的,你的正确 Excel 电子表格中单元格的格式类型不正确,所以这是我的工作限制谢谢我考虑了你的答案

标签: php phpexcel


【解决方案1】:

这里要提醒的重要一点是,Excel 将日期和时间存储为序列日期或序列日期时间。这是自 1900 年 1 月 0 日以来的天数加上一天 24 小时的一小部分。这个article 包含一个很好的解释。

您收到的序列日期为负数,例如 -454654643,这可能意味着 Excel 电子表格中单元格的格式类型不正确。

您需要验证两件事:

  1. 在 Excel 中,使用 Ctrl + ` 显示每个日期单元格的序列日期值。这些值都不应该是负数。然后使用 Ctrl + ` 切换回默认的格式化日期视图。 (` 键位于键盘上 tab 键上方)。
  2. 右键单击日期单元格,导航到Format Cells > Number > Date > Type,并确保Type 中指定的日期格式符合您的意图。因此,如果您的日期被解释为d/m/y,请确保Type 匹配。同样,对于m/d/y

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我会尝试格式化您正在使用的 SELECT 语句中的数据。让数据库做时间工作。让 PHP 脚本真正发挥作用。

    这里是 MYSQL 参考指南的链接,它解释了在数据库端使用日期和时间的所有方法。

    http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

    你要找的是

    SELECT date_format('2014-10-13 22:00:00, '%m-%d-%Y') from <table> WHERE <column> = <data>
    

    这将输出 10-13-2014

    从这里你应该能够弄清楚其余的。

    【讨论】:

      猜你喜欢
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多