gpt4 book ai didi

PHPExcel 将 xls DATETIME 更改为数字

转载 作者:行者123 更新时间:2023-12-02 21:12:08 27 4
gpt4 key购买 nike

当我将 .xls 文件上传到 PHPExcel 时,我想读取原始数据。
我读到有关使用“getValue()”的内容,它应该可以修复它。
但我的情况并非如此。

所以在.xls中我有一个专栏:2015-10-08 11:31
当我用 PHPExcel 处理它时,我得到:42285.47993055556

由于 PHPExcel 首先读取文件,我无法使用 PHP 来创建 DATETIME 对象?!

PHP

for ($row = 2; $row <= $highestRow; ++ $row) {
$val=array();
for ($col = 0; $col < $highestColumnIndex; ++ $col) {
$cell = $worksheet->getCellByColumnAndRow($col, $row);
$val[] = $cell->getValue();

如何解决这个问题?

抛出已接受的答案,我得到了这个代码来为我工作:

for ($row = 2; $row <= $highestRow; ++ $row) {
$val=array();
for ($col = 0; $col < $highestColumnIndex; ++ $col) {
$cell = $worksheet->getCellByColumnAndRow($col, $row);
$val[] = $cell->getValue();
}//close 2nd for loop
//Create and convert xls date to php date
$val[10] = PHPExcel_Shared_Date::ExcelToPHPObject($val[10]);
$val[10] = $val[10]->format('Y-m-d H:i:s');
//query stuff...
}//close first for loop

最佳答案

没有 PHPExcel 不会改变它......它已经是一个数字

MS Excel 根据自 1900 年 1 月 1 日(或 1904 年 1 月 1 日,如果使用 Mac 日历)以来的天数将日期/时间存储为序列化时间戳......42285.47993055556 的值为与 2015-10-08 11:31:06 对应的 Excel 序列化时间戳。存储该值的单元格具有数字格式代码,可将其转换为该日期/时间的人类表示形式。如果更改该掩码,它会更改该值的可见外观,但底层序列化值保持不变。

如果你这样做

$val[] = $cell->getFormattedValue();

然后 PHPExcel 会将数字格式掩码应用于该序列化日期/时间戳,并根据存储在 Excel 文件中的掩码返回包含该日期的人类可读格式的字符串。

如果你这样做

$val[] = PHPExcel_Shared_Date::ExcelToPHP($cell->getValue());

然后 PHPExcel 将返回一个 unix 时间戳,您可以将其传递给 PHP date() 函数以设置您想要的格式

如果你这样做

$val[] = PHPExcel_Shared_Date::ExcelToPHPObject($cell->getValue());

然后 PHPExcel 将返回一个 PHP DateTime 对象,然后您可以使用 DateTime 对象 format() 方法对其进行格式化。

关于PHPExcel 将 xls DATETIME 更改为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33018540/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com