Page 1 sur 1

Addition variables EXcelPhp

Posté : 25 nov. 2016, 00:46
par orell1
Bonsoir,

Savez-vous comment je peux obtenir la somme de ma colonne H ?
$rowNumber = 5;

  while ($row = mysql_fetch_assoc($result)) {
	  
//Colonne H	
        $objPHPExcel->getActiveSheet()->setCellValue('H'.$rowNumber, $row['total_revenus']);

	
	$rowNumber++;
	}
//Colonne H	TOTAL
			$objPHPExcel->getActiveSheet()->setCellValue('H'.$rowNumber, '=SUM(H.premièreVariable:H.dernièreVariable)');
Merci par avance.

Re: Addition variables EXcelPhp

Posté : 25 nov. 2016, 01:03
par @rthur
Regarde dans la doc de phpexcel et ses exemples, de mémoire il y a un fichier formulas.php avec ce que tu souhaites faire

Re: Addition variables EXcelPhp

Posté : 25 nov. 2016, 10:19
par orell1
Merci.
oui j'avais vu mais ça ne parle pas du calcul des variables...
et lorsque je fais :
$objPHPExcel->getActiveSheet()->getCell('H'.$rowNumber)->getCalculatedValue() , EOL;
J'ai cette erreur :( ! ) Parse error: syntax error, unexpected 'EOL' (T_STRING) in C:\wamp64\www\CRM\exportation_tables_opportunites.php on line 251

Re: Addition variables EXcelPhp

Posté : 25 nov. 2016, 10:34
par @rthur
Tu n'as pas défini EOL, regarde dans l'exemple il est défini en début de fichier

Re: Addition variables EXcelPhp

Posté : 25 nov. 2016, 11:43
par orell1
En effet mais maintenant j'ai cette erreur :
Parse error: syntax error, unexpected ',' in

ça n'en fini pas! lol

Re: Addition variables EXcelPhp

Posté : 25 nov. 2016, 12:04
par orell1
autre petite chose, je n'arrive pas à faire en sorte que mes infos dans mon deuxième tableau soient complétées...
J'ai l'impression que mon système de $rowNumber++; ne fonctionne pas....
$objPHPExcel->getActiveSheet()->getStyle('A4:H4')->applyFromArray($styleArray);

//Nous complétons le tableau des nouvelles opportinités - Cloud

$rowNumber = 5;

while($result && $row=mysql_fetch_array($result))
{
	  
	//Colonne A
	    $objPHPExcel->getActiveSheet()->setCellValueExplicit('A'.$rowNumber, utf8_encode($row['num_opportunite']));
        $objPHPExcel->getActiveSheet()->getStyle('A'.$rowNumber)->applyFromArray($BStyle);
	//Colonne B	
        $objPHPExcel->getActiveSheet()->setCellValueExplicit('B'.$rowNumber, utf8_encode(strtoupper($row['entite'])));
        $objPHPExcel->getActiveSheet()->getStyle('B'.$rowNumber)->applyFromArray($BStyle);
	//Colonne C
	    $objPHPExcel->getActiveSheet()->setCellValueExplicit('C'.$rowNumber, utf8_encode($row['nom_opportunite']));
        $objPHPExcel->getActiveSheet()->getStyle('C'.$rowNumber)->applyFromArray($BStyle);
	//Colonne D	
        $objPHPExcel->getActiveSheet()->setCellValueExplicit('D'.$rowNumber,utf8_encode($row['ligne_service_1']));
        $objPHPExcel->getActiveSheet()->getStyle('D'.$rowNumber)->applyFromArray($BStyle);		
	//Colonne E
	    $objPHPExcel->getActiveSheet()->setCellValueExplicit('E'.$rowNumber,utf8_encode($row['opportunite_etape']));
        $objPHPExcel->getActiveSheet()->getStyle('E'.$rowNumber)->applyFromArray($BStyle);
	//Colonne F	
        $objPHPExcel->getActiveSheet()->setCellValueExplicit('F'.$rowNumber,utf8_encode($row['quadri']));
        $objPHPExcel->getActiveSheet()->getStyle('F'.$rowNumber)->applyFromArray($BStyle);		
	//Colonne G
	    $objPHPExcel->getActiveSheet()->setCellValueExplicit('G'.$rowNumber, utf8_encode($row['num_opportunite']));
        $objPHPExcel->getActiveSheet()->getStyle('G'.$rowNumber)->applyFromArray($BStyle);
	//Colonne H	
        $objPHPExcel->getActiveSheet()->setCellValue('H'.$rowNumber, $row['total_revenus']);
        $objPHPExcel->getActiveSheet()->getStyle('H'.$rowNumber)->applyFromArray($BStyle);	
	//Colonne H	TOTAL



		
	$rowNumber++;
	}
	
	$objPHPExcel->getActiveSheet()->setCellValue('H'.$rowNumber, '=SUM(H)');
			//$objPHPExcel->getActiveSheet()->getCell('H'.$rowNumber)->getCalculatedValue() , EOL;
			

$rowNumberInfo = $rowNumber +=1;
$objPHPExcel->getActiveSheet()->setCellValue('A'.$rowNumberInfo, $rowNumberInfo);	
$objPHPExcel->getActiveSheet()->getStyle('A'.$rowNumberInfo.':H'.$rowNumberInfo)->applyFromArray($BStyle);
$objPHPExcel->getActiveSheet()->getStyle('A'.$rowNumberInfo.':H'.$rowNumberInfo)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle('A'.$rowNumberInfo.':H'.$rowNumberInfo)->getFill()->getStartColor()->setARGB('22427C');	

$objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowNumberInfo, 'N°');
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowNumberInfo, 'Client/Prospect');
$objPHPExcel->getActiveSheet()->SetCellValue('C'.$rowNumberInfo, 'Nom de l\'opportunité');
$objPHPExcel->getActiveSheet()->SetCellValue('D'.$rowNumberInfo, 'Ligne de service');
$objPHPExcel->getActiveSheet()->SetCellValue('E'.$rowNumberInfo, 'Statut');
$objPHPExcel->getActiveSheet()->SetCellValue('F'.$rowNumberInfo, 'Commercial');
$objPHPExcel->getActiveSheet()->getCell('G'.$rowNumberInfo)->setValue("Echéance mise en\noeuvre");
$objPHPExcel->getActiveSheet()->getStyle('G'.$rowNumberInfo)->getAlignment()->setWrapText(true);
$objPHPExcel->getActiveSheet()->getStyle('A'.$rowNumberInfo.':H'.$rowNumberInfo)->getAlignment()->applyFromArray(
    array('horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER,));
$objPHPExcel->getActiveSheet()->getStyle('A'.$rowNumberInfo.':H'.$rowNumberInfo)->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getCell('H'.$rowNumberInfo)->setValue("Estimation\nMensualité");
//$objPHPExcel->getActiveSheet()->getStyle('H'.$rowNumberInfo)->getAlignment()->setWrapText(true);
	
	
$rowNumberInfo = $rowNumber +=1;
while($result && $row_info=mysql_fetch_array($result))
{
	//Colonne A
	    $objPHPExcel->getActiveSheet()->setCellValueExplicit('A30', utf8_encode($row_info['num_opportunite']));
        $objPHPExcel->getActiveSheet()->getStyle('A'.$rowNumberInfo)->applyFromArray($BStyle);
	//Colonne B	
        $objPHPExcel->getActiveSheet()->setCellValueExplicit('B'.$rowNumberInfo, utf8_encode(strtoupper($row_info['entite'])));
        $objPHPExcel->getActiveSheet()->getStyle('B'.$rowNumberInfo)->applyFromArray($BStyle);
	//Colonne C
	    $objPHPExcel->getActiveSheet()->setCellValueExplicit('C'.$rowNumberInfo, utf8_encode($row_info['nom_opportunite']));
        $objPHPExcel->getActiveSheet()->getStyle('C'.$rowNumberInfo)->applyFromArray($BStyle);
	//Colonne D	
        $objPHPExcel->getActiveSheet()->setCellValueExplicit('D'.$rowNumberInfo,utf8_encode($row_info['ligne_service_1']));
        $objPHPExcel->getActiveSheet()->getStyle('D'.$rowNumberInfo)->applyFromArray($BStyle);		
	//Colonne E
	    $objPHPExcel->getActiveSheet()->setCellValueExplicit('E'.$rowNumberInfo,utf8_encode($row_info['opportunite_etape']));
        $objPHPExcel->getActiveSheet()->getStyle('E'.$rowNumberInfo)->applyFromArray($BStyle);
	//Colonne F	
        $objPHPExcel->getActiveSheet()->setCellValueExplicit('F'.$rowNumberInfo,utf8_encode($row_info['quadri']));
        $objPHPExcel->getActiveSheet()->getStyle('F'.$rowNumberInfo)->applyFromArray($BStyle);		
	//Colonne G
	    $objPHPExcel->getActiveSheet()->setCellValueExplicit('G'.$rowNumberInfo, utf8_encode($row_info['num_opportunite']));
        $objPHPExcel->getActiveSheet()->getStyle('G'.$rowNumberInfo)->applyFromArray($BStyle);
	//Colonne H	
        $objPHPExcel->getActiveSheet()->setCellValue('H'.$rowNumberInfo, $row_info['total_revenus']);
        $objPHPExcel->getActiveSheet()->getStyle('H'.$rowNumberInfo)->applyFromArray($BStyle);	
	//Colonne H	TOTAL

		$rowNumberInfo++;
	}
Pour résumer, mes variables sont ok dans mon premier tableau... Les infos sont bien récupérée depuis ma base sql, en revanche dans mon deuxième tableau, rien du tout, à part les titres...

Merci par avance pour vos conseils et votre aide.

Re: Addition variables EXcelPhp

Posté : 25 nov. 2016, 13:03
par Spols
£Pour ton message d'erreur, regarde à la ligne donné, il devrait y avoir une virgule qui n'est pas nécessaire

pour ton autre problème, je pense que ceci n'est pas bon
$rowNumberInfo = $rowNumber +=1;

remplace le par
$rowNumberInfo = $rowNumber;
$rowNumberInfo +=1;

dans le premier cas, tu attribue à $rowNumberInfo la valeur de l'incrémentation de $rowNumber comme l'incrémentation c'est bien passée, $rowNumberInfo vaut TRUE et pas un nombre

Re: Addition variables EXcelPhp

Posté : 26 nov. 2016, 16:52
par orell1
Bonjour,

Merci. Plus d'erreur mais le calcul de ma colonne ne se fait pas j'ai essayé plein de trucs comme :
//Colonne H	
        $objPHPExcel->getActiveSheet()->setCellValue('H'.$rowNumber, $row_horspi_contracte['total']);
        $objPHPExcel->getActiveSheet()->getStyle('H'.$rowNumber)->applyFromArray($BStyle);
$objPHPExcel->getActiveSheet()->getStyle('H'.$rowNumber)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);		
		$rowNumber++;

			//Colonne H	TOTAL
			$rowNumber +=1;
        $objPHPExcel->getActiveSheet()->setCellValue("G".$rowNumber, "Total");
        //$objPHPExcel->getActiveSheet()->("H".$rowNumber, "=SUM(H".$rowNumber.":H".$rowNumber-1));
		$objPHPExcel->getActiveSheet()->setCellValue('H'.$rowNumber, '=SUM(H'.($rowNumber-1).':H'.$rowNumber.')');

}
En fait je ne sais pas du tout comment faire....
J'ai trouvé des exemples comme:
$objPHPExcel->getActiveSheet()->setCellValue('D11', 'Total excl.:');
$objPHPExcel->getActiveSheet()->setCellValue('E11', '=SUM(E4:E9)');
Mais jamais des exemples comme ce que je souhaite faire...
Merci pour votre aide.

Re: Addition variables EXcelPhp

Posté : 26 nov. 2016, 18:10
par Spols
As tu une formule dans excel ? ton attribution de formule est bizarre et produira une référence circulaire, excell la supprime probablement tout seul.
tu cherche à mettre dans HX, =sum(HX-1:HX)
donc si X = 11, H11 contient =sum(H10:H11) essaye cela dans excel il te dira zut.

essaye
$objPHPExcel->getActiveSheet()->setCellValue('H'.$rowNumber, '=SUM(H5:H'.($rowNumber-1).')');
j'ai mis 5 car tu initie ta variable à 5, à modifier si besoin.

Re: Addition variables EXcelPhp

Posté : 27 nov. 2016, 00:01
par orell1
Merci.
C'est bon sauf que le 5 en réalité est aussi variable.
il y a plusieurs tableaux et en fonction des variables sql tout change...

En réalité pour le premier tableau oui cela commence à 5 mais pour le deuxième par exemple si le premier tableau retourne 10 valeurs du sql alors dans le deuxième tableau le calcul se fera à partir de la ligne 19...

le premier tableau commence à 5 donc nous ajoutons 10 (requêtes sql) + 2 (saut de cellules rowNumber +=2;) + 1 (entête du tabealu) donc le cacul commence à la 19ème ligne jusqu'à ce qu'à la fin du retour de la base sql...
Tu vois le truc ?

Merci.

Re: Addition variables EXcelPhp

Posté : 27 nov. 2016, 18:14
par Spols
Oui donc ca tu devrai pouvoir gérer tout seul, tu retiens l'index de départ dans une variable, et tu vas jusquà l'index-1 je pense que cette adaptation est dans tes cordes.

Re: Addition variables EXcelPhp

Posté : 27 nov. 2016, 20:28
par orell1
Oui mais quel est index de départ ? Puisqu'on ne sait jamais à quelle ligne le calcul commence :-(

Merci

Re: Addition variables EXcelPhp

Posté : 27 nov. 2016, 21:05
par orell1
Je viens d'essayer ça et rien du tout... :-(
$rowNumber +=1;	

while($result_horspi_contracte && $row_horspi_contracte=mysql_fetch_array($result_horspi_contracte))
{
if (utf8_encode($row_horspi_contracte['ligne_service_1'])!='Info' && utf8_encode($row_horspi_contracte['ligne_service1'])!='PCS' && utf8_encode($row_horspi_contracte['opportunite_etape'])=='contractée') { 
	//Colonne A
	    $objPHPExcel->getActiveSheet()->setCellValue('A'.$rowNumber, utf8_encode($row_horspi_contracte['num']));
        $objPHPExcel->getActiveSheet()->getStyle('A'.$rowNumber)->applyFromArray($BStyle);
		$index_cal='A'.$rowNumber;
	//Colonne B	
        $objPHPExcel->getActiveSheet()->setCellValueExplicit('B'.$rowNumber, utf8_encode(strtoupper($row_horspi_contracte['entite'])));
        $objPHPExcel->getActiveSheet()->getStyle('B'.$rowNumber)->applyFromArray($BStyle);
	//Colonne C
	    $objPHPExcel->getActiveSheet()->setCellValueExplicit('C'.$rowNumber, utf8_encode($row_horspi_contracte['nom']));
        $objPHPExcel->getActiveSheet()->getStyle('C'.$rowNumber)->applyFromArray($BStyle);
	//Colonne D	
        $objPHPExcel->getActiveSheet()->setCellValueExplicit('D'.$rowNumber,utf8_encode($row_horspi_contracte['ligne_service']));
        $objPHPExcel->getActiveSheet()->getStyle('D'.$rowNumber)->applyFromArray($BStyle);		
	//Colonne E
	    $objPHPExcel->getActiveSheet()->setCellValueExplicit('E'.$rowNumber,utf8_encode($row_horspi_contracte['opportunite_etape']));
        $objPHPExcel->getActiveSheet()->getStyle('E'.$rowNumber)->applyFromArray($BStyle);
	//Colonne F	
        $objPHPExcel->getActiveSheet()->setCellValueExplicit('F'.$rowNumber,utf8_encode($row_horspi_contracte['quadri']));
        $objPHPExcel->getActiveSheet()->getStyle('F'.$rowNumber)->applyFromArray($BStyle);		
	//Colonne G
	    $objPHPExcel->getActiveSheet()->setCellValueExplicit('G'.$rowNumber, utf8_encode($row_horspi_contracte['num']));
        $objPHPExcel->getActiveSheet()->getStyle('G'.$rowNumber)->applyFromArray($BStyle);
	//Colonne H	
        $objPHPExcel->getActiveSheet()->setCellValue('H'.$rowNumber, $row_horspi_contracte['total']);
        $objPHPExcel->getActiveSheet()->getStyle('H'.$rowNumber)->applyFromArray($BStyle);
		$objPHPExcel->getActiveSheet()->getStyle('H'.$rowNumber)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);		
			//Colonne H	TOTAL
		   
		$rowNumber++;
 $objPHPExcel->getActiveSheet()->setCellValueExplicit('G'.$rowNumber, 'Total');
 $objPHPExcel->getActiveSheet()->getStyle('G'.$rowNumber)->applyFromArray($BStyle);
 $objPHPExcel->getActiveSheet()->setCellValue('H'.$rowNumber, '=SUM(H'.$index_cal.':H'.($rowNumber-2).')');

}

	}
J'obtiens cela dans excel (après exportation) ==> =SOMME(H190:HA191)

Alors que je devrais avoir : =SOMME(H165:HA191)

Là je ne vois pas ...
Merci par avance.

Re: Addition variables EXcelPhp

Posté : 27 nov. 2016, 23:27
par Spols
Un rien de logique suffit, déjà tu devrais surement pas obtenir =SOMME(H190:HA191)
tu mélange des H, HA tu fais des -2 quand un -1 devrait être mieux.


Je sais pas tester ton code,
mais tu dois enregistrer la valeur de $rowNumber avant d'entrer dans ta boucle, et calculer ton total après ta sortie de boucle. avec l'aide de la valeur précédement enregistrée et la valeur de rowNumber en sortie de boucle.

un truc du genre
$rowNumber +=1;	
$index_cal=$rowNumber;

while($result_horspi_contracte && $row_horspi_contracte=mysql_fetch_array($result_horspi_contracte))
{
if (utf8_encode($row_horspi_contracte['ligne_service_1'])!='Info' && utf8_encode($row_horspi_contracte['ligne_service1'])!='PCS' && utf8_encode($row_horspi_contracte['opportunite_etape'])=='contractée') { 
  //Colonne A
      $objPHPExcel->getActiveSheet()->setCellValue('A'.$rowNumber, utf8_encode($row_horspi_contracte['num']));
        $objPHPExcel->getActiveSheet()->getStyle('A'.$rowNumber)->applyFromArray($BStyle);
  //Colonne B	
        $objPHPExcel->getActiveSheet()->setCellValueExplicit('B'.$rowNumber, utf8_encode(strtoupper($row_horspi_contracte['entite'])));
        $objPHPExcel->getActiveSheet()->getStyle('B'.$rowNumber)->applyFromArray($BStyle);
  //Colonne C
      $objPHPExcel->getActiveSheet()->setCellValueExplicit('C'.$rowNumber, utf8_encode($row_horspi_contracte['nom']));
        $objPHPExcel->getActiveSheet()->getStyle('C'.$rowNumber)->applyFromArray($BStyle);
  //Colonne D	
        $objPHPExcel->getActiveSheet()->setCellValueExplicit('D'.$rowNumber,utf8_encode($row_horspi_contracte['ligne_service']));
        $objPHPExcel->getActiveSheet()->getStyle('D'.$rowNumber)->applyFromArray($BStyle);		
  //Colonne E
      $objPHPExcel->getActiveSheet()->setCellValueExplicit('E'.$rowNumber,utf8_encode($row_horspi_contracte['opportunite_etape']));
        $objPHPExcel->getActiveSheet()->getStyle('E'.$rowNumber)->applyFromArray($BStyle);
  //Colonne F	
        $objPHPExcel->getActiveSheet()->setCellValueExplicit('F'.$rowNumber,utf8_encode($row_horspi_contracte['quadri']));
        $objPHPExcel->getActiveSheet()->getStyle('F'.$rowNumber)->applyFromArray($BStyle);		
  //Colonne G
      $objPHPExcel->getActiveSheet()->setCellValueExplicit('G'.$rowNumber, utf8_encode($row_horspi_contracte['num']));
        $objPHPExcel->getActiveSheet()->getStyle('G'.$rowNumber)->applyFromArray($BStyle);
  //Colonne H	
        $objPHPExcel->getActiveSheet()->setCellValue('H'.$rowNumber, $row_horspi_contracte['total']);
        $objPHPExcel->getActiveSheet()->getStyle('H'.$rowNumber)->applyFromArray($BStyle);
    $objPHPExcel->getActiveSheet()->getStyle('H'.$rowNumber)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);		
      //Colonne H	TOTAL
       
    $rowNumber++;
}

  }
 $objPHPExcel->getActiveSheet()->setCellValueExplicit('G'.$rowNumber, 'Total');
 $objPHPExcel->getActiveSheet()->getStyle('G'.$rowNumber)->applyFromArray($BStyle);
 $objPHPExcel->getActiveSheet()->setCellValue('H'.$rowNumber, '=SUM(H'.$index_cal.':H'.($rowNumber-1).')');
Juste pour le -1 ou -2, je vois pas mais si tu as une raison de mettre -2, adapte à ton cas

Re: Addition variables EXcelPhp

Posté : 27 nov. 2016, 23:44
par orell1
Yes!
C'est exactement ça!

Top!
Merci beaucoup! et Bravo! C'était tellement logique en fait tu as raison!
Bonne soirée.