Tu peux surement quand même nous fournir un code minimal reproduisant ton problème ?
Tu n'utiliserai pas les fonctions en français au lieu de l'anglais ?
Tu peux surement quand même nous fournir un code minimal reproduisant ton problème ?
Tu n'utiliserai pas les fonctions en français au lieu de l'anglais ?
Tout d'abord merci,
après réflexion je vais partager mon code en cachant les affichages sensibles ^^
Ceci est ma fonction principale, j'ai laissé seulement la partie qui nous intéresse:
fonction qui remplie la feuille:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 public function extract_action(){ //ON RECUPERE LES DONNEES $projet = Request::post('projet_select'); $date_debut = Request::post('date_debut'); $date_fin = Request::post('date_fin'); if(!empty($date_debut) && !empty($date_fin)){ $currentDateOfDatabase = DateModel::currentDateTimeOfTable('mantis_project_table'); $today=new DateTime($currentDateOfDatabase->date); //echo "DATE OBSERVATION: ".$today->format('Y-m-d')."<br/>"; $dateDebut=new DateTime(); $dateDebut->setTimestamp(strtotime($date_debut.' 00:00:00')); $dateFin=new DateTime(); $dateFin->setTimestamp(strtotime($date_fin.' 23:59:59')); }else{ Redirect::to('indicateur/index'); } //////CREATION DE LA PREMIERE FEUILLE $classeur = new PHPExcel;// nouveau fichier excel $classeur->getProperties()->setCreator("L'entreprise");// on lui attribue un createur $classeur->setActiveSheetIndex(0);// on définit la feuille active $feuille_engagement = $classeur->getActiveSheet();//on récupère cette feuille. $feuille_engagement->setTitle('Engagements');//on lui donne un nom $feuille_engagement = self::create_feuille_engagement($feuille_engagement,$projet); //////////////////////////////////////////////////////////////// /////CREATION DE LA SECONDE FEUILLE //////////////////////////////////////////////////////////////// $feuille = $classeur->createSheet(); $classeur->setActiveSheetIndex(1); $feuille = $classeur->getActiveSheet(); $feuille = self::entete_tab_liste_dossiers($feuille); //////////////////////////////////////////////////////////////// $toutesLesDemandesDesProjet = DemandeModel::recupereDemandeEntreDeuxTimestamp($dateDebut->getTimestamp(),$dateFin->getTimestamp(),$projet); //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //traitement des données souhaitées $HistoriqueDetaillee = self::traitement_action_liste_dossiers($toutesLesDemandesDesProjet,$currentDateOfDatabase); //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //Remplissage de la feuille liste dossier $feuille = self::remplir_feuille_liste_dossier($feuille,$HistoriqueDetaillee); //////////////////////////////////////////////////////////////// //EXPORT EXCEL header("Content-type: application/vnd.ms-excel"); header("Content-Disposition: attachment;filename=\"".$projet."_du_".$dateDebut->format('d-m-Y')."_au_".$dateFin->format('d-m-Y').".xlsx\""); header('Cache-Control: max-age=0'); } // envoi du fichier au navigateur $writer = PHPExcel_IOFactory::createWriter($classeur, 'Excel2007'); $writer->setPreCalculateFormulas(false); $writer->save('php://output'); }
voila, je ne peux vraiment pas fournir plus ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 public function remplir_feuille_liste_dossier($feuille,$HistoriqueDetaillee){ $djt=DateModel::plageHoraire; //9*3600; foreach($HistoriqueDetaillee as $i=>$demande){ $feuille->setCellValueByColumnAndRow(0, ($i+2), $demande['numdemande']); $feuille->setCellValueByColumnAndRow(1, ($i+2), $demande['projet']); $feuille->setCellValueByColumnAndRow(2, ($i+2), $demande['domaine']); $feuille->setCellValueByColumnAndRow(3, ($i+2), $demande['resume']); $feuille->setCellValueByColumnAndRow(4, ($i+2), $demande['typedemande']); $feuille->setCellValueByColumnAndRow(5, ($i+2), $demande['severite']); $feuille->setCellValueByColumnAndRow(6, ($i+2), $demande['impact']); $feuille->setCellValueByColumnAndRow(7, ($i+2), $demande['statutActuel']); $datecrea=new DateTime(); $datecrea->setTimestamp($demande['dateCreation']); $feuille->setCellValueByColumnAndRow(8, ($i+2), $datecrea->format('d-m-Y H:i:s')); if(isset($demande['last_up'])){ $datecrea=new DateTime(); $datecrea->setTimestamp($demande['last_up']); $feuille->setCellValueByColumnAndRow(9, ($i+2), $datecrea->format('d-m-Y H:i:s')); }else{ $feuille->setCellValueByColumnAndRow(9, ($i+2), ' '); } $feuille->setCellValueByColumnAndRow(10, ($i+2), $demande['user']); if($demande['date_souhaiter'] > 0){ $datesh=new DateTime(); $datesh->setTimestamp($demande['date_souhaiter']); $feuille->setCellValueByColumnAndRow(11, ($i+2), $datesh->format('d-m-Y H:i:s')); }else{ $feuille->setCellValueByColumnAndRow(11, ($i+2), ' '); } if($demande['date_prevue'] > 0){ $datepr=new DateTime(); $datepr->setTimestamp($demande['date_prevue']); $feuille->setCellValueByColumnAndRow(12, ($i+2), $datepr->format('d-m-Y H:i:s')); }else{ $feuille->setCellValueByColumnAndRow(12, ($i+2), ' '); } $feuille->setCellValueByColumnAndRow(13, ($i+2), $demande['total_temps']); $feuille->setCellValueByColumnAndRow(14, ($i+2), round($demande['total_temps']/$djt,2)); $feuille->setCellValueByColumnAndRow(15, ($i+2), $demande['total_tempsTMA']); $feuille->setCellValueByColumnAndRow(16, ($i+2), round($demande['total_tempsTMA']*8/$djt,2)); $feuille->setCellValueByColumnAndRow(17, ($i+2), $demande['total_tempsClient']); $feuille->setCellValueByColumnAndRow(18, ($i+2), round($demande['total_tempsClient']/$djt,2)); if($demande['total_temps']>0){ $feuille->setCellValueByColumnAndRow(19, ($i+2), round(100*$demande['total_tempsTMA']/$demande['total_temps'],2)); }else{ $feuille->setCellValueByColumnAndRow(19, ($i+2),'0'); } if($demande['total_temps']>0){ $feuille->setCellValueByColumnAndRow(20, ($i+2), round(100*$demande['total_tempsClient']/$demande['total_temps'],2)); }else{ $feuille->setCellValueByColumnAndRow(20, ($i+2), '0'); } $datecrea=new DateTime(); $datecrea->setTimestamp($demande['dateCreation']); $dateMoisOuverture = date('d-m-Y',mktime(0,0,0,date('m',$datecrea->getTimestamp()),1,date('Y',$datecrea->getTimestamp()))); $feuille->setCellValueByColumnAndRow(22, ($i+2),$dateMoisOuverture); if(isset($demande['last_up'])){ $datecrea->setTimestamp($demande['last_up']); $dateMoisCloture = date('d-m-Y',mktime(0,0,0,date('m',$datecrea->getTimestamp()),1,date('Y',$datecrea->getTimestamp()))); $feuille->setCellValueByColumnAndRow(23, ($i+2), $dateMoisCloture ); }else{ $feuille->setCellValueByColumnAndRow(23, ($i+2), ' '); } $feuille->setCellValueByColumnAndRow(24, ($i+2),'=SI(E'.($i+2).'="" , GAUCHE(B'.($i+2).', 2 ), CONCATENER(RECHERCHEV(E'.($i+2).' ,Engagements!A$29:B$40 , 2 , FALSE ) , " " , F'.($i+2).'))'); $feuille->setCellValueByColumnAndRow(25,($i+2),'=SI(E'.($i+2).'="",GAUCHE(B'.($i+2).',2),RECHERCHEV(E'.($i+2).',Engagements!A$29:B$40,2,FALSE))'); $feuille->setCellValueByColumnAndRow(26,($i+2),'=SI(GAUCHE(B'.($i+2).',2)="SB","SB",RECHERCHEV(C'.($i+2).',Engagements!$A$49:$B$87,2,FALSE))'); $feuille->setCellValueByColumnAndRow(27, ($i+2), round($demande['total_tempsTMA']*8/$djt,2)); $feuille->setCellValueByColumnAndRow(28,($i+2),'=RECHERCHEV(Y'.($i+2).',Engagements!$A$8:$E$19,5,FALSE)'); $feuille->getStyle('AD'.($i+2).'')->applyFromArray(array( 'fill'=>array( 'type'=>PHPExcel_Style_Fill::FILL_SOLID, 'color'=>array( 'argb'=>'FFCC99')))); $feuille->setCellValueByColumnAndRow(29,($i+2),'=SI(H'.($i+2).'="Fermé",SI(AB'.($i+2).'>AC'.($i+2).',"KO", "OK"),"N/A")'); } return $feuille; }
La réponse est donc oui.Tu n'utiliserai pas les fonctions en français au lieu de l'anglais ?
Il faut utiliser les fonctions en anglais
CONCATENER => CONCATENATE
RECHERCHEV => VLOOKUP
SI => IF
GAUCHE => LEFT
Et au passage : date_souhaiter => date_souhaitee
Un grand merci à toi Sabotage,
Je ne savais pas que PHPExcel était "sensible" à ce point ^^.
Concernant mon orthographe des variables, il ne faut même pas chercher à comprendre j'aime pas écrire mon code en français, mais celui qui va maintenir l'application le souhaite x) donc je réfléchi pas trop ^^.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager