Пример #1
0
	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 />';
			}
		}
	}
Пример #2
0
 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]);
         }
     }
 }
Пример #3
0
 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;
         }
     }
 }