gpt4 book ai didi

php - 如何使用 ExcelBundle [Symfony Bundle] 读取日期

转载 作者:行者123 更新时间:2023-12-04 22:03:41 25 4
gpt4 key购买 nike

我在尝试使用 $cell->getCalculatedValue() 读取单元格值时遇到问题日期时间单元格。

excel文件值为28/2/15 (格式为 d/m/y)但我得到 42063 .

这是格式的问题吗?如果是,我该如何解决?

最佳答案

MS Excel 日期/时间值是浮点数,不是格式化字符串或任何其他特殊数据类型;并且只有数字格式掩码才能将它们与任何其他浮点数区分开来
getCalculatedValue()将处理任何公式,但不会应用任何格式,因此您只需返回浮点值

然而
getFormattedValue()将为单元格计算任何公式,但也会应用任何数字格式掩码,因此“日期”将作为格式化字符串返回,具体取决于该单元格的数字格式掩码

编辑

返回的格式化字符串取决于使用的数字格式掩码....不幸的是,一些 MS Excel 日期格式掩码是区域设置感知的,但 PHPExcel 不是,因此如果单元格使用这些掩码之一,则结果可能不会像您一样格式化会想要的。

您可以使用您选择的格式掩码为单元格值应用手动格式:

$result = PHPExcel_Style_NumberFormat::toFormattedString(
$cell->getCalculatedValue(),
PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY
);

或者
$result = PHPExcel_Style_NumberFormat::toFormattedString(
$cell->getCalculatedValue(),
'dd/mm/yy'
);

或者,您可以使用将 MS Excel 序列化时间戳转换为 unix 时间戳
$result = PHPExcel_Shared_Date::ExcelToPHP(
$cell->getCalculatedValue()
);

或 PHP DateTime 对象
$result = PHPExcel_Shared_Date::ExcelToPHPObject(
$cell->getCalculatedValue()
);

然后使用普通 PHP date()DateTime::format()屏蔽以根据需要进行格式化

编辑#2

要识别单元格是否包含日期:
if (PHPExcel_Shared_Date::isDateTime($cell)) {
echo 'Cell ', $cell->getCoordinate(), ' contains a date value';
}

关于php - 如何使用 ExcelBundle [Symfony Bundle] 读取日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29280715/

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