php - PHPExcel setReadDataOnly(true)不适用于ODS

时间:2017-04-01 16:02:34

标签: phpexcel ods

在ODS单元格中输入 12:00 并获取默认时间格式,setReadDataOnly(true)然后getValue(),值为 25569.5 ,如果格式化单元格为getValue(),数值为 0.5 。如何在ODS中看到 12:00 getValue() = 0.5

1 个答案:

答案 0 :(得分:0)

如果您使用setReadDataOnly(true),则无法使用PHPExcel在ODS(或xlsx或xls等)中查看日期/时间....

setReadDataOnly(true)的重点是它只读取单元格的原始内容,而没有任何格式化信息,例如将单元格标识为包含日期/时间值的格式信息。

Excel将日期/时间值存储为序列化时间戳,即自基本开始日期(1900年1月1日或1904年1月1日,具体取决于日历设置)以来的天数,作为浮点值。 将此标识为日期/时间值的是数字格式掩码,它指定应如何显示该浮动。

PHPExcel会复制此行为,如果您使用setReadDataOnly(false)加载电子表格,则getValue()将返回序列化时间戳,而getFormattedValue()将应用数字格式掩码并返回格式化日期/时间字符串。 相反,如果您使用setReadDataOnly(true)加载文件,则代码无法将此浮点数识别为日期/时间值,或者知道它应该如何格式化而不是浮点数,因为您选择不加载允许进行此识别的格式信息。

TL / DR 如果您希望PHPExcel能够将日期/时间值标识为日期/时间,请不要使用setReadDataOnly(true)