1

これらは私が得ている例外です:

次の例外が発生します。

キャッチされなかった例外「Exception」とメッセージ「CyclicReferenceinFormula」

私は非常に複雑な計算を含むExcelシートを扱っています。ここに全部書くことはできません。インターフェイスを使用して、そのExcelシートの特定のセルに値を送信しています。次に、出力セルから計算値を取得します。

getOldCalculatedValue()を使用すると、最初に使用したときに正しい値が取得されます(方法がわかりません)

getOldCalculatedValue()の問題は、これが解決策ではないことです。また、入力値を更新しても、出力値は変更されません。

今私は深くチェックしました..これらは例外を生成している式です:

致命的なエラー:キャッチされない例外「例外」とメッセージ「STEAM!B30-> STEAM!E57-> STEAM!B56-> STEAM!B38-> STEAM!B89->内部エラー」

B30:= IF(G32 = 1、IF(E570、D55 <> 0)、IF(G32 = 1、IF(E57

E57:== IF(B44

B56:= B38 * SQRT(IF(E44 = 1、B52,1 ^(3/4)* B53 ^(1/4)* B52 / E43 ^(3/4)/ E44 ^(1/4))/ E43)

B38:= VLOOKUP(B70、CHART、2)

B89:== HLOOKUP($ E $ 4、WLC2CV、VLOOKUP($ B $ 4、WLC2CV、15))

古い計算値を割り当てて例外を処理しているときに、警告が生成されます。

警告(2):sqrt()は、パラメーター1がdoubleであり、文字列が[APP \ vendors \ Classes \ PHPExcel \ Calculation.php、line3324]であると想定しています。

4

1 に答える 1

0

循環式とは、セル A1 に式 =B1+1 が含まれ、セル B1 に =A1+1 が含まれているようなものです。数式を実行すると、それ自体にループバックする一連の計算が行われます

これは Excel で有効ですが、既定の動作では、エラーが発生したときにエラー メッセージが生成されます。ただし、この動作を変更して、Excel が指定されたサイクル数または反復回数で数式を処理するようにすることができます。

PHPExcel は両方の動作をサポートしています。デフォルトでは、Excel と同様にエラー メッセージが生成されます。ただし、計算エンジンの $cyclicFormulaCount プロパティを 0 より大きい値に設定すると、Excel が実行できる 2 番目の動作がエミュレートされます。最も単純なレベルで

PHPExcel_Calculation::getInstance()->cyclicFormulaCount = 1

循環エラーを抑制し、基本的な循環計算を実行できるようにします。 $cyclicFormulaCount をより高い値に設定すると、(指定した値まで) いくつかのサイクルまたは反復を介して数式を計算できます。

getOldCalculatedValue() メソッドは、MS Excel 自体によって最後に実行された計算の結果を取得します。これは正しいかもしれませんが、保証されていません (たとえば、式の計算が Excel 自体で抑制されている場合)。

于 2012-05-13T17:03:24.950 に答える