循環式とは、(たとえば) セル A1 に式 =B1+1 が含まれ、セル B1 に =A1+1 が含まれているようなものです。式を実行すると、それ自体にループバックする一連の計算が行われます。
これは Excel で有効ですが、既定の動作では、エラーが発生したときにエラー メッセージが生成されます。ただし、この動作を変更して、Excel が指定されたサイクル数または反復回数で数式を処理するようにすることができます。
PHPExcel は両方の動作をサポートしています。デフォルトでは、Excel と同様にエラー メッセージが生成されます。ただし、計算エンジンの $cyclicFormulaCount プロパティを 0 より大きい値に設定すると、Excel が実行できる 2 番目の動作がエミュレートされます。最も単純なレベルでは:
PHPExcel_Calculation::getInstance()->cyclicFormulaCount = 1;
循環エラーを抑制し、基本的な循環計算を実行できるようにします。 $cyclicFormulaCount をより高い値に設定すると、(指定した値まで) いくつかのサイクルまたは反復を介して数式を計算できます。
getOldCalculatedValue() メソッドは、MS Excel 自体によって最後に実行された計算の結果を取得します。これは正しいかもしれませんが、保証されていません (例: Excel 自体で数式の計算が抑制されている場合)。
または、ファイルを保存する前に PHPExcel が式を計算しないようにすることもできます。
$objWriter->setPreCalculateFormulas(FALSE);
編集
バージョン 1.7.9 以降、計算エンジンはワークブック ファイルごとに 1 つの計算エンジン インスタンスが存在するように変更されているため、どのインスタンスに対して cyclicFormulaCount を設定する必要があるかを示す必要があります。
それよりも
PHPExcel_Calculation::getInstance()->cyclicFormulaCount = 1;
あなたが使うだろう
PHPExcel_Calculation::getInstance($objPHPExcel)->cyclicFormulaCount = 1;