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

时间:2011-03-23 13:52:02

标签: php mysql date format phpexcel

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

2 个答案:

答案 0 :(得分:4)

使用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日历)。 09年1月12日的Excel时间戳为39825(基于Excel Windows 1900日历)。

答案 1 :(得分:0)

使用将字符串日期转换为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);