Когда вы впервые получаете вычисленное значение с помощью вызова getCalculatedValue()
, PHPExcel (по умолчанию) кэширует результат, поэтому последующие вызовы не будут пересчитывать, а просто вернут кэшированное значение.
Это уменьшает накладные расходы на вычисления, которые обычно возникают, когда на одну и ту же вычисляемую ячейку ссылаются в других формулах ячеек.
Это может быть проблемой, когда вы читаете вычисляемые данные, затем меняете значения ячеек, а затем пересчитываете, поэтому PHPExcel предоставляет методы, позволяющие вам управлять кешем.
Вы можете изменить поведение по умолчанию, чтобы вычисленные результаты никогда не кэшировались, отключив кеш вычислений одним из следующих способов:
PHPExcel_Calculation::getInstance($objPHPExcel)->disableCalculationCache();
or:
PHPExcel_Calculation::getInstance($objPHPExcel)->setCalculationCacheEnabled(false);
Или вы можете очистить кеш в любой момент, выполнив вызов:
PHPExcel_Calculation::getInstance($objPHPExcel)->clearCalculationCache();
Обратите внимание, что метод getOldCalculatedValue()
используется для получения последнего значения, рассчитанного для ячейки самим MS Excel, а не из PHPExcel. Не гарантируется, что текущие данные каким-либо образом будут отражаться, потому что можно отключить MS Excel от выполнения вычислений по формуле; но иногда может быть полезно для формул, которые ссылаются на внешние файлы или источники данных.
person
Mark Baker
schedule
09.07.2015