在ODS单元格中输入 12:00 并获取默认时间格式,setReadDataOnly(true)
然后getValue()
,值为 25569.5 ,如果格式化单元格为getValue()
,数值为 0.5 。如何在ODS中看到 12:00 并getValue()
= 0.5 ?
答案 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)