2016-08-05 9 views
1

PHPでxmlファイルを読み込もうとしていますが、いくつか問題があります。致命的なエラー:キャッチされていないPHPExcel_Calculation_Exception

まず、自分のセルが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()が、その後私はそのようなエラーが発生しました:

Fatal error: Uncaught PHPExcel_Calculation_Exception: Tesipro!C2 -> Formula Error:

私が何をするか分かりません。

答えて

0

First of all, if my cell is: 20/11/2016, I get that in php with getFormattedValue() but its result is: 42370. Why that?

42370は、MS Excelシリアライズされたタイムスタンプです。内部的には、MS Excelは日付/時刻を数値のタイムスタンプとして維持します。 1900年1月1日(またはExcelのMac版の場合は1904年1月1日)からの日数を保持する浮動小数点値を時間の小数部として時間とともに返します。その後、数値形式のマスクを使用して、その値を人が読める形式で日付として表示します。

通常、getValue()は生のセル値、この場合はシリアル化されたタイムスタンプを返します。 getFormattedValue()は、数値書式マスクを適用して、その値をMS Excel GUIに表示されるように書式設定された文字列に変換します。 getFormattedValue()を使用していて、まだ42370の値が表示されている場合は、readDataOnlyをtrueに設定してファイルをロードしたことがあります。これは、数値書式マスクをロードしないようにPHPExcelに指示します。シリアル化されたタイムスタンプ値を表示可能な日付形式に変換します。


そして式の問題のために、私は値を計算しようとしたときの計算エンジンの実行の詳細を分析するために、ファイル自体にアクセスすることなく、原因を特定するために多くを行うことはできません。デバッグモードで計算を実行する方法を示すgist hereがあります。この情報は、問題を試して診断することを容易にします。

関連する問題