private function _castToFormula($c, $r, &$cellDataType, &$value, &$calculatedValue, &$sharedFormulas, $castBaseType) { // echo '<font color="darkgreen">Formula</font><br />'; // echo '$c->f is '.$c->f.'<br />'; $cellDataType = 'f'; $value = "={$c->f}"; $calculatedValue = self::$castBaseType ( $c ); // Shared formula? if (isset ( $c->f ['t'] ) && strtolower ( ( string ) $c->f ['t'] ) == 'shared') { // echo '<font color="darkgreen">SHARED FORMULA</font><br />'; $instance = ( string ) $c->f ['si']; // echo 'Instance ID = '.$instance.'<br />'; // // echo 'Shared Formula Array:<pre>'; // print_r($sharedFormulas); // echo '</pre>'; if (! isset ( $sharedFormulas [( string ) $c->f ['si']] )) { // echo '<font color="darkgreen">SETTING NEW SHARED // FORMULA</font><br />'; // echo 'Master is '.$r.'<br />'; // echo 'Formula is '.$value.'<br />'; $sharedFormulas [$instance] = array ( 'master' => $r, 'formula' => $value ); // echo 'New Shared Formula Array:<pre>'; // print_r($sharedFormulas); // echo '</pre>'; } else { // echo '<font color="darkgreen">GETTING SHARED // FORMULA</font><br />'; // echo 'Master is '.$sharedFormulas[$instance]['master'].'<br // />'; // echo 'Formula is '.$sharedFormulas[$instance]['formula'].'<br // />'; $master = PHPExcel_Cell::coordinateFromString ( $sharedFormulas [$instance] ['master'] ); $current = PHPExcel_Cell::coordinateFromString ( $r ); $difference = array ( 0, 0 ); $difference [0] = PHPExcel_Cell::columnIndexFromString ( $current [0] ) - PHPExcel_Cell::columnIndexFromString ( $master [0] ); $difference [1] = $current [1] - $master [1]; $value = $this->_referenceHelper->updateFormulaReferences ( $sharedFormulas [$instance] ['formula'], 'A1', $difference [0], $difference [1] ); // echo 'Adjusted Formula is '.$value.'<br />'; } } }
private function _castToFormula($c, $r, &$cellDataType, &$value, &$calculatedValue, &$sharedFormulas, $castBaseType) { $cellDataType = 'f'; $value = "={$c->f}"; $calculatedValue = self::$castBaseType($c); // Shared formula ? if (isset($c->f['t']) && strtolower((string) $c->f['t']) == 'shared') { $instance = (string) $c->f['si']; if (!isset($sharedFormulas[(string) $c->f['si']])) { $sharedFormulas[$instance] = array('master' => $r, 'formula' => $value); } else { $master = PHPExcel_Cell::coordinateFromString($sharedFormulas[$instance]['master']); $current = PHPExcel_Cell::coordinateFromString($r); $difference = array(0, 0); $difference[0] = PHPExcel_Cell::columnIndexFromString($current[0]) - PHPExcel_Cell::columnIndexFromString($master[0]); $difference[1] = $current[1] - $master[1]; $value = $this->_referenceHelper->updateFormulaReferences($sharedFormulas[$instance]['formula'], 'A1', $difference[0], $difference[1]); } } }
private function castToFormula($c, $r, &$cellDataType, &$value, &$calculatedValue, &$sharedFormulas, $castBaseType) { // echo 'Formula', PHP_EOL; // echo '$c->f is ', $c->f, PHP_EOL; $cellDataType = 'f'; $value = "={$c->f}"; $calculatedValue = self::$castBaseType($c); // Shared formula? if (isset($c->f['t']) && strtolower((string) $c->f['t']) == 'shared') { // echo 'SHARED FORMULA', PHP_EOL; $instance = (string) $c->f['si']; // echo 'Instance ID = ', $instance, PHP_EOL; // // echo 'Shared Formula Array:', PHP_EOL; // print_r($sharedFormulas); if (!isset($sharedFormulas[(string) $c->f['si']])) { // echo 'SETTING NEW SHARED FORMULA', PHP_EOL; // echo 'Master is ', $r, PHP_EOL; // echo 'Formula is ', $value, PHP_EOL; $sharedFormulas[$instance] = array('master' => $r, 'formula' => $value); // echo 'New Shared Formula Array:', PHP_EOL; // print_r($sharedFormulas); } else { // echo 'GETTING SHARED FORMULA', PHP_EOL; // echo 'Master is ', $sharedFormulas[$instance]['master'], PHP_EOL; // echo 'Formula is ', $sharedFormulas[$instance]['formula'], PHP_EOL; $master = PHPExcel_Cell::coordinateFromString($sharedFormulas[$instance]['master']); $current = PHPExcel_Cell::coordinateFromString($r); $difference = array(0, 0); $difference[0] = PHPExcel_Cell::columnIndexFromString($current[0]) - PHPExcel_Cell::columnIndexFromString($master[0]); $difference[1] = $current[1] - $master[1]; $value = $this->referenceHelper->updateFormulaReferences($sharedFormulas[$instance]['formula'], 'A1', $difference[0], $difference[1]); // echo 'Adjusted Formula is ', $value, PHP_EOL; } } }