首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >致命错误:未登录的PHPExcel_Calculation_Exception

致命错误:未登录的PHPExcel_Calculation_Exception
EN

Stack Overflow用户
提问于 2016-08-05 08:24:27
回答 1查看 891关注 0票数 1

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

首先,如果我的单元格是: 20/11/2016,我在PHPwithgetFormattedValue()中得到了这个结果,但其结果是: 42370。为什么要这样?

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

代码语言:javascript
复制
=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 ->公式错误:

该怎么办呢。

EN

回答 1

Stack Overflow用户

发布于 2016-08-05 09:02:18

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

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

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

对于公式问题,在没有访问文件本身的情况下,我无法确定原因,在试图计算值时分析计算引擎的执行细节;但是有一个要点在这里显示如何在调试模式下运行计算。来自此的信息将使尝试和诊断问题变得更容易。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38784571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档