php - 使用PHPExcel将excel文件内容导入MySQL数据库(格式问题)

标签 php mysql date format phpexcel

我正在将 Excel 2007 文件的内容导入 MySQL 数据库,但电子表格中的日期字段是自定义日期格式 (dd-mmm-yy)。我无法将其更改为文本,因为客户端将上传它,所以这是不可行的。当我导入文件的内容时,它会将日期作为数字插入,例如40978 而不是 12-Jan-09。我知道更改该字段的数据库表格式不会有任何效果,因为它的 exces formatitng 但是有人知道解决这个问题的方法吗?不改变电子表格的格式?

最佳答案

使用 PHPExcel 的内置转换方法,如 PHPExcel_Shared_Date::ExcelToPHP() 或 PHPExcel_Shared_Date::ExcelToPHPObject() 将日期值分别转换为 PHP/Unix 时间戳或 PHP DateTime 对象。

然后您可以使用适当的 PHP date() 或 $DateTimeObject->format() 函数将其格式化为 yyyy-mm-dd 格式字符串。

编辑

$excelDateValue = 40978;

$PHPTimeStamp = PHPExcel_Shared_Date::ExcelToPHP($excelDateValue);
echo $PHPTimeStamp,'<br />';
echo date('Y-m-d',$PHPTimeStamp),'<br />';

$excelDateValue = 40978;

$PHPDateTimeObject = PHPExcel_Shared_Date::ExcelToPHPObject($excelDateValue);
echo $PHPDateTimeObject->format('Y-m-d'),'<br />';

顺便提一句,Excel 日期戳 40978 是 2012 年 3 月 10 日(基于 Excel Windows 1900 日历)或 2016 年 3 月 11 日(基于 Excel Mac 1904 日历)。 2009 年 1 月 12 日将是 Excel 时间戳 39825(基于 Excel Windows 1900 日历)。

关于php - 使用PHPExcel将excel文件内容导入MySQL数据库(格式问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5406253/

相关文章:

php - 从一个查询中减去另一查询的总计

php - 在 Opencart 上使用 foreach 的 Twitter Bootstrap 选项卡

mysql - 使用node.js在MySql中批量插入

date - Play 2.0 日期格式

php - 在 PHP 中使用 strtotime() 和在 MySQL 中使用 UNIX_TIMESTAMP() 时的不同时间戳

php - 在 php mysql 中的 while 语句外回显多个字段

php - 将查询错误转为 MySQLi 中的异常

python - MySQL 主键作为外键 - 约束错误

MySQL 选择 COUNT(*) 和具有最大日期的行

c# - 如何使用 C# 将 2 字节 C 日期转换为 .NET DateTime?