致命错误:未捕获PHPExcel\u计算\u异常

致命错误:未捕获PHPExcel\u计算\u异常,php,excel,Php,Excel,我试图用PHP读取xml文件,但我遇到了一些问题 首先,如果我的单元格是:20/11/2016,我在PHP中通过getFormattedValue()得到它,但结果是:42370。为什么 另一个更重要的是,我想在一个公式的单元格中得到结果:例如,我在一个单元格中得到了:128,但公式是: =SI(O(INDICE(Precios;COINCIDIR(C$1;Tipos;0);COINCIDIR($A326;Días;0))="";INDICE(Precios;COINCIDIR(C$1;Tipo

我试图用PHP读取xml文件,但我遇到了一些问题

首先,如果我的单元格是:20/11/2016,我在PHP中通过
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\u计算\u异常:Tesipro!C2->公式错误:

我不知道该怎么办

首先,如果我的单元格是:20/11/2016,我在php中用getFormattedValue()得到它,但结果是:42370。为什么

42370是MS Excel序列化的时间戳。在内部,MS Excel将日期/时间作为数字时间戳进行维护;一个浮点值,表示自1900年1月1日(如果是Mac版Excel,则为1904年1月1日)起的天数,时间为一天的小数部分。然后,它使用数字格式掩码将该值以人类可读的形式显示为日期

通常,
getValue()
将返回原始单元格值,即本例中的序列化时间戳;而
getFormattedValue()
也将应用数字格式掩码,将该值转换为格式化后的字符串,以便在MS Excel GUI中显示。 如果您正在使用
getFormattedValue()
并且仍然看到
42370
值,那么很可能您加载的文件中
readDataOnly
设置为true,这会告诉PHPExcel不要加载数字格式掩码,因此,它无法应用格式掩码将序列化的时间戳值转换为可显示的日期格式


对于公式问题,如果不访问文件本身,在尝试计算值时分析计算引擎的执行细节,我无法识别原因;但是有一个示例演示了如何在调试模式下运行计算。从中获得的信息将使尝试和诊断问题变得更容易

首先,如果我的单元格是:20/11/2016,我在php中用getFormattedValue()得到它,但结果是:42370。为什么

42370是MS Excel序列化的时间戳。在内部,MS Excel将日期/时间作为数字时间戳进行维护;一个浮点值,表示自1900年1月1日(如果是Mac版Excel,则为1904年1月1日)起的天数,时间为一天的小数部分。然后,它使用数字格式掩码将该值以人类可读的形式显示为日期

通常,
getValue()
将返回原始单元格值,即本例中的序列化时间戳;而
getFormattedValue()
也将应用数字格式掩码,将该值转换为格式化后的字符串,以便在MS Excel GUI中显示。 如果您正在使用
getFormattedValue()
并且仍然看到
42370
值,那么很可能您加载的文件中
readDataOnly
设置为true,这会告诉PHPExcel不要加载数字格式掩码,因此,它无法应用格式掩码将序列化的时间戳值转换为可显示的日期格式


对于公式问题,如果不访问文件本身,在尝试计算值时分析计算引擎的执行细节,我无法识别原因;但是有一个示例演示了如何在调试模式下运行计算。从中获得的信息将使尝试和诊断问题变得更容易