Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHPExcel将excel文件内容导入MySQL数据库(格式问题)_Php_Mysql_Date_Format_Phpexcel - Fatal编程技术网

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

使用PHPExcel将excel文件内容导入MySQL数据库(格式问题),php,mysql,date,format,phpexcel,Php,Mysql,Date,Format,Phpexcel,我正在将Excel 2007文件的内容导入MySQL数据库,但电子表格中的日期字段是自定义日期格式dd mmm yy。我无法将此更改为文本,因为客户端将上载它,因此不可行。当我导入文件内容时,它会将日期插入为数字,例如40978,而不是09年1月12日。我知道更改字段的数据库表格式不会有任何效果,因为它的格式优于其他格式,但是有人知道解决这个问题的方法吗?在不更改电子表格格式的情况下?使用PHPExcel的内置转换方法,如PHPExcel_Shared_Date::ExcelToPHP或PHPE

我正在将Excel 2007文件的内容导入MySQL数据库,但电子表格中的日期字段是自定义日期格式dd mmm yy。我无法将此更改为文本,因为客户端将上载它,因此不可行。当我导入文件内容时,它会将日期插入为数字,例如40978,而不是09年1月12日。我知道更改字段的数据库表格式不会有任何效果,因为它的格式优于其他格式,但是有人知道解决这个问题的方法吗?在不更改电子表格格式的情况下?

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

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

编辑


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

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

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

编辑


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

使用代码塔尔将字符串日期转换为mysql格式的日期。比如:

$ma=array("jan"=>"-01-","feb"=>"-02-","mar"=>"-03-", etc );
$month=$ma[strtolower(substr($exceldate,3,3))];
$newdate="20".substr($exceldate,7,2).$month.substr($exceldate,0,2);

使用代码塔尔将字符串日期转换为mysql格式的日期。比如:

$ma=array("jan"=>"-01-","feb"=>"-02-","mar"=>"-03-", etc );
$month=$ma[strtolower(substr($exceldate,3,3))];
$newdate="20".substr($exceldate,7,2).$month.substr($exceldate,0,2);

它将所有日期转换为2040年@MLEWIS54我想这是因为40978是导入mysql之前返回的数字,所以我需要从这个数字开始工作。是否将所有日期转换为2040@MLEWIS54我想这是因为40978是导入mysql之前返回的数字,所以我需要从这个数字开始工作$PHPDateTimeObject->format'Y-m-d',;这就是我所缺少的:-@markbakerecho$PHPDateTimeObject->format'Y-m-d',;这就是我所缺少的:——@马克·贝克
$ma=array("jan"=>"-01-","feb"=>"-02-","mar"=>"-03-", etc );
$month=$ma[strtolower(substr($exceldate,3,3))];
$newdate="20".substr($exceldate,7,2).$month.substr($exceldate,0,2);