首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何利用PHPExcel库从excel中获取数据

如何利用PHPExcel库从excel中获取数据
EN

Stack Overflow用户
提问于 2013-10-30 13:37:35
回答 5查看 52.7K关注 0票数 29

我正在尝试使用PHPExcel从excel中获取日期。但是我没有得到日期,我得到的字符串值不是1970年的秒数。

我尝试过的代码是

代码语言:javascript
运行
复制
$InvDate=trim($excel->getActiveSheet()->getCell('B' . $i)->getValue());
EN

回答 5

Stack Overflow用户

发布于 2013-10-30 14:26:50

尝试使用

代码语言:javascript
运行
复制
$cell = $excel->getActiveSheet()->getCell('B' . $i);
$InvDate= $cell->getValue();
if(PHPExcel_Shared_Date::isDateTime($cell)) {
     $InvDate = date($format, PHPExcel_Shared_Date::ExcelToPHP($InvDate)); 
}

附注:

@DiegoDD:值得一提的是,$format是日期的理想格式。例如:

代码语言:javascript
运行
复制
 $InvDate = date($format = "Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($InvDate)); 

附注: 2019使用新版本的PhpOffice https://stackoverflow.com/a/45070205/426533查看answer @gabriel-lupu

票数 59
EN

Stack Overflow用户

发布于 2013-10-30 16:10:27

对于日期,getValue()应该返回一个浮点数,这是该日期/时间的Excel序列化时间戳值...我怀疑是您的trim()将其转换为string。实际值是自1900年1月1日(或1904年1月1日,取决于电子表格使用的日历)以来的天数。

调用getFormattedValue()或getCalculatedValue()而不是getValue()应根据单元格的数字格式掩码返回格式化为人类可读字符串的日期。

或者,谢尔盖的解决方案测试单元格是否具有日期/时间数字格式掩码,并调用适当的帮助器方法将该Excel序列化的时间戳转换为unix时间戳,然后使用普通的PHP date函数根据$format的值将其格式化为人类可读的格式。还有一个类似的助手方法PHPExcel_Shared_Date::ExcelToPHPObject(),它可以将Excel序列化的时间戳转换为PHP DateTime对象

票数 13
EN

Stack Overflow用户

发布于 2017-07-13 09:52:12

在新版本的库PhpOffice中,处理此问题的函数是excelToDateTimeObject,因此新的代码格式应为:

代码语言:javascript
运行
复制
$cell = $excel->getActiveSheet()->getCell('B' . $i);
$InvDate= $cell->getValue();
if (PhpOffice\PhpSpreadsheet\Shared\Date::isDateTime($cell)) {
     $InvDate = PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($InvDate); 
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19674633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档