致命错误:未捕获PHPExcel_Calculation_Exception

我想用PHP读取一个XML文件,但我有一些问题。

首先,如果我的单元格是:20/11/2016,我使用getFormattedValue()得到了这个结果:42370.为什么?

而另一个更重要的是,我想在一个公式的单元格中的结果:例如,我在一个单元格中:128,但公式是:

 =SI(O(INDICE(Precios;COINCIDIR(C$1;Tipos;0);COINCIDIR($A326;Días;0))="";INDICE(Precios;COINCIDIR(C$1;Tipos;0);COINCIDIR($A326;Días;0))=Caracter_Cierre);"";MAX(INDICE(Precios;COINCIDIR(C$1;Tipos;0);COINCIDIR($A326;Días;0));INDICE(Precios_Minimos;COINCIDIR(C$1;Tipos_Precios_Minimos;0);3))) 

所以,我得到了: getCalculatedValue()但是我得到了这样的错误:

致命错误:未捕获PHPExcel_Calculation_Exception:Tesipro!C2 – >公式错误:

我不知道该怎么办。

首先,如果我的单元格是:20/11/2016,我用getFormattedValue()得到了它的结果是:42370.为什么?

42370是MS Excel序列化的时间戳。 在内部,MS Excel维护date/时间作为数字时间戳; 一个浮点值,持有自1900年1月1日以来的天数(或1904年1月1日,如果是Mac版本的Excel),时间为当天的小数部分。 然后它使用数字格式掩码以可读的forms显示该值作为date。

通常情况下, getValue()将返回原始单元格值,在这种情况下是序列化的时间戳。 并且getFormattedValue()将应用数字格式掩码,也将该值转换为格式化为显示在MS Excel GUI中的string。 如果使用的是getFormattedValue()并且仍然看到42370值,那么很可能你已经加载了readDataOnly设置为true的文件,它告诉PHPExcel不要加载数字格式掩码,所以它不能应用格式掩码将该序列化的时间戳值转换为可显示的date格式。


而对于公式问题,我无法在不访问文件本身的情况下找出原因,在计算值时分析计算引擎的执行细节; 但这里有一个要点,它显示了如何在debugging模式下运行计算。 从这些信息可以更容易地尝试和诊断问题。