使用PHPExcel将excel文件内容导入MySQL数据库(格式问题)
我正在将 Excel 2007 文件的内容导入 MySQL 数据库,但电子表格中的日期字段是自定义日期格式 (dd-mmm-yy)。我无法将其更改为文本,因为客户端将上传它,所以这是不可行的。当我导入文件内容时,它会以数字形式插入日期,例如 40978,而不是 2009 年 1 月 12 日。我知道更改该字段的数据库表格式不会产生任何影响,因为它的格式很好,但是有人知道解决这个问题的方法吗?不改变电子表格的格式?
I'm importing the contents of an Excel 2007 file into a MySQL database but the date field in the spreadsheet is a custom date format (dd-mmm-yy). I cannot change this to text because a client will be uploading it so it is not feasible. When I import the contents of the file it inserts the date as a number e.g. 40978 instead of 12-Jan-09. I know that changing the database table format of the field will have no effect as its excels formatitng but does anyone know a way around this? Without changing the format of the spreadsheet?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 PHPExcel 的内置转换方法(例如 PHPExcel_Shared_Date::ExcelToPHP() 或 PHPExcel_Shared_Date::ExcelToPHPObject())将日期值分别转换为 PHP/Unix 时间戳或 PHP DateTime 对象。
然后,您可以使用适当的 PHP date() 或 $DateTimeObject->format() 函数将其格式化为 yyyy-mm-dd 格式字符串。
编辑
或
顺便说一下,Excel 日期戳 40978 是 2012 年 3 月 10 日(基于 Excel Windows 1900 日历)或 2016 年 3 月 11 日(基于 Excel Mac 1904 日历)。 2009 年 1 月 12 日的 Excel 时间戳为 39825(基于 Excel Windows 1900 日历)。
Use PHPExcel's built in conversion methods like PHPExcel_Shared_Date::ExcelToPHP() or PHPExcel_Shared_Date::ExcelToPHPObject() to convert the date values to a PHP/Unix timestamp or a PHP DateTime object respectively.
You can then format this to a yyyy-mm-dd format string using the appropriate PHP date() or $DateTimeObject->format() functions.
EDIT
or
Incidentally An Excel datestamp of 40978 is 10th March 2012 (based on the Excel Windows 1900 Calendar) or 11th March 2016 (based on the Excel Mac 1904 calendar). 12-Jan-09 would be an Excel timestamp of 39825 (based on the Excel Windows 1900 Calendar).
使用代码 thar 会将字符串日期转换为 mysql 格式的日期。像这样的东西:
Use code thar will convert the string date into a mysql formatted date. Something like: