PHPExcel 获取未知类型的显示值

PHPExcel get display value of unknown type

可以使用 getValue()、getCalculatedValue() 和 getOldCalculatedValue() 检索 phpexcel.

中单元格的值

有没有办法以编程方式确定单元格的内容类型并应用相应的正确方法。我需要以一般方式使用它。即显示与打开 excel.

时相同的值

我知道有一个叫做 getDataType() 的东西,但不确定如何在这种情况下应用它(不在文档中)。根据我的经验,有时只有这三个中的一个检索到正确的值。

(例如,对于公式,有时 getOldCalculatedValue 有效但 getCalculatedValue 无效。其他时候仅 getvalue 有效,等等)

getOldCalculatedValue() 用于检索 MS Excel 本身先前计算的结果;并且不应依赖,因为可以在 MS Excel 中禁用自动计算,这可能会使该字段留空,甚至使用不正确的值。它在 PHPExcel 中用作依赖于外部电子表格数据的单元格公式的 "fallback",但它仍然不应被视为绝对值。

getValue() return 单元格的 "raw" 值。 returned 值可能需要 "interpretation"。包含日期 and/or 时间的单元格在 MS Excel 中只是一个浮点值,因此它将 return 浮动(例如 42017.7916666667 而不是人类可读的 date/time喜欢13-Jan-2015 19:00; 如果单元格包含公式(例如 =TODAY()),它将 return 实际公式;或 0.8 对于可能被格式化为百分比并且在 MS Excel 本身中显示为 80% 的值。

如果单元格包含公式,

getCalculatedValue() 将尝试执行公式计算,并且 return 该计算的结果。如果单元格不包含公式,那么它将 return 值 "raw",与 getValue() 相同。虽然 PHPExcel 有一个相当不错的计算引擎,但它并不完美(例如,它不能处理 3d 单元格范围或数组公式),因此某些公式可能会失败。同样,包含对外部资源的引用的公式也可能会失败,虽然 PHPExcel 会尝试在这种情况下使用 getOldCalculatedValue(),但(如上所述)不能保证保持正确的结果。

getFormattedValue() 将执行 getCalculatedValue(),然后对结果应用适用于该单元格的任何数字格式掩码,这样(例如)带有日期掩码的浮点数将显示为一个约会。 但是,如果您使用 readDataOnly(true) 加载了电子表格文件,那么它告诉 PHPExcel not加载任何格式,包括数字格式掩码,因此它将无法格式化结果。

当您访问 MS Excel 本身时,最接近 MS Excel 本身显示的值的结果将是 getFormattedValue()