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

发布于 2024-10-25 14:08:36 字数 215 浏览 3 评论 0原文

我正在将 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

删除会话 2024-11-01 14:08:36

使用 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 日历)。

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

$excelDateValue = 40978;

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

or

$excelDateValue = 40978;

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

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).

水溶 2024-11-01 14:08:36

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

Use code thar will convert the string date into a mysql formatted date. Something like:

$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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文