Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Bureautique
Bureautique Forum d'entraide sur la gestion dynamique de documents de bureautique (Word, Excel, OpenOffice...) avec PHP. Avant de poster -> Cours Excel, FAQ OpenXML, FAQ OpenDocument
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/07/2011, 17h46   #1
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Par défaut [PHPExcel] Ne garde pas l'ajustement automatique

Bonjour,

Je génère un fichier xlsx en utilisant un fichier modèle que je rempli de données.

Le problème : Alors que j'ai configuré le modèle pour l'ajustement automatique de la hauteur des ligne, dans le fichier résultat l'ajustement ne fonctionne plus automatiquement. Cela oblige l'utilisateur à sélectionner les cellules et a cliquer sur ->format -> ajuster la hauteur de ligne.

J'ai essayé pas mal de trucs, notament de mettre $sheet->getPageSetup()->setFitToHeight(1); juste avant la génération du fichier mais sans résultat.

J'utilise la dernière version de PHPExcel : 1.7.6. Et je génère en Excel2007 (Modèle et output).

Mon code (désolé pour la longueur) :

Code :
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
<?php
SESSION_START();
if (isset($_SESSION['authentification']) && $_SESSION['authentification'] == "vrai")
{
  include 'Classes/PHPExcel.php';
  include 'Classes/PHPExcel/Writer/Excel2007.php';
 
  $dsn = '';
  $mylogin = '';
  $mypwd = '';
  $link  = odbc_connect($dsn, $mylogin, $mypwd);
 
  // LES FONCTIONS :
 
  // Fonction qui cherche un mot dans une chaine et qui renvoi toute la sous-chaine contenant le mot
 
  FUNCTION chercheEtEcrit($chaineATrouver, $cellule, $sheet)
  {
    $tableauChaine = array();
    $tableauChaine2 = array();
    $tableauChaine3 = array();
 
    for($i=4; $i<=func_num_args(); $i++)      // Gestion des paramètres indéfinis (le nombre de paramètre commence à 1)
    {
      $accesOuPasAcces = func_get_arg(4-1);     // On retient la première valeur des paramêtres indéfinis celle-ci pouvant
                                                // servir de booléen de vérif pour déterminer si on est en train d'analyser
                                                // une chaine qui concerne les accés
 
      $chaineAExplorer = func_get_arg($i-1);  // Le paramètre courant (le tableau des arguments commence à 0)
 
      $regex = '#'.$chaineATrouver.'#i';
 
      $tableauChaine = explode("~", $chaineAExplorer);                      // On crée un tableau avec les séparateurs "~"
 
      if($accesOuPasAcces != "access")                                      // Si ->PAS<- accés routiers
      {
        foreach($tableauChaine as $valeurCourante)                          // Pour chaque case du tableau
        {
          //$tableauChaine2 = explode(",", $valeurCourante);                  // On crée un tableau avec les séparateurs ","
          //$tableauChaine3 = array_merge($tableauChaine2, $tableauChaine3);  // On ajoute chaque tableau créé dans un tableau final
 
          $tableauChaine2 = preg_split("#,[^0-9]#", $valeurCourante);        // Le séparateur du tableau est le caractère: ","non suivi d'un chiffre
          $tableauChaine3 = array_merge($tableauChaine2, $tableauChaine3);   // afin de ne pas prendre un nombre à virgule pour un séparateur
        }
 
        $tableauChaine = $tableauChaine3;
        $tableauChaine2 = array();
        $tableauChaine3 = array();
 
        foreach($tableauChaine as $valeurCourante)                            // Pour chaque case du tableau
        {
          $tableauChaine2 = explode(" - ", $valeurCourante);                  // On crée un tableau avec les séparateurs " - "
          $tableauChaine3 = array_merge($tableauChaine2, $tableauChaine3);    // On ajoute chaque tableau créé dans un tableau final
        }
      }
 
      $tableauChaine3 = ($accesOuPasAcces!="access")?$tableauChaine3:$tableauChaine; // Si ->PAS<- accés routiers $tableauChaine3 concerve sa valeur
                                                                                     // si accés routier on prend $tableauChaine (qui n'a pas été
                                                                                     // modifié) comme valeur de $tableauChaine3
 
      foreach($tableauChaine3 as $valeurCourante)                           // On boucle sur le tableau final à la recherche de la regex
      {
       if(preg_match($regex, $valeurCourante))
       {
        $valeurCourante = preg_replace("#\[\@logo33\]( *: *)?|\[\@logo34\]( *: *)?|\[\@logo35\]( *: *)?|\[\@logo36\]( *: *)?|\[\@logo37\]( *: *)?#",'',$valeurCourante);
        $valeurCourante = iconv("ISO-8859-15//TRANSLIT","UTF-8",$valeurCourante);
        $sheet->setCellValue($cellule, $valeurCourante);
       }
      }
    }
  }
 
  // Fonction de redimentionnement propotionnel des photo en fonction de la dimention d'une cellule
 
  FUNCTION imageResizing($objDrawing,$quoi)
  {
    $largeurCellule =  245;
    $hauteurCellule =  ($quoi == 'photo')?145:80; // si photo : si plan
    $largeurPhoto = $objDrawing->getWidth();
    $hauteurPhoto = $objDrawing->getHeight();
 
    $i = 1;
    while(($largeurPhoto >= $largeurCellule) or ($hauteurPhoto >= $hauteurCellule))
    {
      $diviseur = "1.0$i";
      $largeurPhoto = $largeurPhoto / $diviseur;
      $hauteurPhoto = $hauteurPhoto / $diviseur;
      $i++;
    }
    $objDrawing->setWidth($largeurPhoto);
    $objDrawing->setHeight($hauteurPhoto);
  }
 
  // Fonction d'insertion de la photo dans une offre
 
  FUNCTION insererPhotoOffre($offre, $rangOffre, $tColonnes, &$workbook)
  {
    if(isset($_POST["selectionPhoto$offre"])&& !empty($_POST["selectionPhoto$offre"])) // Si il y a une photo à afficher
    {
      $adressePhoto = $_POST["selectionPhoto$offre"];
      $adressePhoto = preg_replace("#VD#","ID",$adressePhoto);
 
      $objDrawing = new PHPExcel_Worksheet_Drawing();
 
      $objDrawing->setName("photoOffre$offre");
      $objDrawing->setDescription("photoOffre$offre");
      $objDrawing->setPath($adressePhoto);
 
      imageResizing($objDrawing,'photo');
 
      $lettreColonne = $tColonnes[$rangOffre-1];
 
      $objDrawing->setCoordinates($lettreColonne.'6');
 
      $objDrawing->setWorksheet($workbook->getActiveSheet());
    }
  }
 
  FUNCTION renseignerOffre($offre, $rangOffre, $tColonnes, $link, $sheet)
  {
    $sql = "...";
 
    $sqlLots = "...";
 
    $lettreColonne = $tColonnes[$rangOffre-1];
 
    $nbEtages = 0;
    $tNumeroEtage = array();
    $coutBureaux = 0;
 
    // Résultats sql liés à l'offre
 
    $resultat = odbc_exec($link, $sql);
 
    if($resultat && odbc_num_rows($resultat) != 0)
    {
    	while ($row = odbc_fetch_array($resultat))
    	{
        $offreId            = $row[offre_id];
        $typeBien           = $row[Type_de_Bien];
        $nomBien            = $row[Nom_du_bien];
        $noRue              = $row[NoRue];
        $rue                = $row[Rue];
        $codePostal         = $row[CP];
        $ville              = $row[ville];
        $surfaceTotale      = $row[Surface_totale];
        $surfaceDiv         = $row[surface_div];
        $dateDispo          = $row[dispo];
        $anneeConstruction  = $row[annee_construction];
        $construction       = $row[construction];
        $dpeLettre          = $row[dpeLettre];
        $dpe                = $row[dpe];
        $erp                = $row[ERP];
        $igh                = $row[IGH];
        $independant        = $row[Independant];
        $etatImmeuble       = $row[etat_immeuble];
        $txBureaux          = $row[tx_bureaux];
        $impotFoncier       = $row[impot_foncier];
        $depotGarantie      = $row[depot_garantie];
        $accrocheTitre      = $row[accroche_titre];
        $AgencementImmeuble = $row[AgencementImmeuble];
      	$AmenagementAdr     = $row[AmenagementAdr];
      	$AmenagementOffre   = $row[AmenagementOffre];
      	$Access             = $row[Acess];
      }
 
      // Résultats sql liés aux lots de loffre
 
      $resultatLots = odbc_exec($link, $sqlLots);
 
      if($resultatLots && odbc_num_rows($resultatLots) != 0)
      {
    	  while ($row = odbc_fetch_array($resultatLots))
    	  {
          $idOffre          = $row[offreId];
          $lotId            = $row[lot_id];
          $etage            = $row[Etage];
          $etageOrdre       = $row[EtageOrdre];
          $typeBienId       = $row[TypeBienId];
          $libelleTypeBien  = $row[LibelleTypeBien];
          $surfaceLot       = $row[Surface];
          $location         = $row[Location];
          $vente            = $row[Vente];
          $loyer            = $row[loyer];
          $charge           = $row[charge];
          $prix             = $row[prix];
          $prixCharge       = $row[prixCharge];
          $dateDispo        = $row[dateDispo];
          $stadeComm        = $row[StadeComm];
          $nBParking        = $row[NbParking];
          $bail             = $row[Bail];
          $fiscalLoc        = $row[Fiscal_Loc];
          $fiscalVente      = $row[Fiscal_vente];
          $coutParking      = $row[Parking];
          $parkingNb        = $row[ParkingNB];
 
          // Comptage du nombre d'étages et addition des surfaces des lots (si bureaux)
          if($row[TypeBienId] == 1)
          {
            // Comptage des étages
            if(!in_array($row[Etage], $tNumeroEtage)) // Si le numero de l'étage n'est pas déjà enregistré
            {
              $nbEtages++;
            }
            $tNumeroEtage[] = $row[Etage];
 
            // Calcul du total des loyers bureaux (coût bureau)
            $coutBureaux += $loyer;
          }
        }
      }
 
      $chaineTotaleLot = "1: ".$idOffre." | 2: ".$lotId." | 3: ".$etage." | 4: ".$etageOrdre." | 5: ".$typeBienId." | 6: ".$libelleTypeBien." | 7: ".$surface." | 8: ".$location." | 9: ".$vente." | 10: ".$loyer." | 11: ".$charge." | 12 ".$prix
      ." | 13: ".$prixCharge." | 14: ".$dateDispo." | 15: ".$stadeComm." | 16: ".$nBParking." | 17: ".$bail." | 18: ".$fiscalLoc." | 19: ".$fiscalVente." | 20: ".$parking." | 21: ".$parkingNb;
      $chaineTotaleLot = iconv("ISO-8859-15//TRANSLIT","UTF-8",$chaineTotaleLot);
 
 
      $chaineTotale = "offreId: $offreId, Amenagement Adresse:  $AmenagementAdr, Amenagement Offre : $AmenagementOffre, Access : $Access, Agencement Immeuble : $AgencementImmeuble";
      $chaineTotale = iconv("ISO-8859-15//TRANSLIT","UTF-8",$chaineTotale);
      //$sheet->setCellValue($lettreColonne.'30', $chaineTotale); // Debug
      // Moteur de recherche
 
      // Pour les accés
      chercheEtEcrit("\[\@logo33\]",      $lettreColonne.'10' ,$sheet, "access", $Access );  // info sur accès routier
      chercheEtEcrit("\[\@logo36\]|métro",$lettreColonne.'11' ,$sheet, "access", $Access );  // On passe "acces" à la fonction pour lui signaler
      chercheEtEcrit("\[\@logo37\]|rer",  $lettreColonne.'12' ,$sheet, "access", $Access );  // qu'on analyse les accés et ainsi ne pas gérer les
      chercheEtEcrit("\[\@logo35\]|bus",  $lettreColonne.'15' ,$sheet, "access", $Access ); // séparateurs : "," (la chaine "access" sera analysée par
      chercheEtEcrit("sncf| train ",      $lettreColonne.'13' ,$sheet, "access", $Access ); // la fonction mais ça n'aura aucune conséquence puisque
      chercheEtEcrit("vélib",             $lettreColonne.'16' ,$sheet, "access", $Access ); // ce n'est pas un mot que l'on recherche
      chercheEtEcrit("tramway",           $lettreColonne.'14' ,$sheet, "access", $Access );
 
      // Pour les aménagements (Offre/Adresse/Immeuble/Construction)
      chercheEtEcrit("parkings?",                           $lettreColonne.'30' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble);
      chercheEtEcrit("climatisation",                       $lettreColonne.'41' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble);
      chercheEtEcrit("chauffage|chaudiere",                 $lettreColonne.'42' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble);
      chercheEtEcrit("ascenseurs",                          $lettreColonne.'43' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble );   // monte-charge
      chercheEtEcrit("monte",                               $lettreColonne.'44' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble );   // monte-charge
      chercheEtEcrit("électrogène|electrogene",             $lettreColonne.'45' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble );
      chercheEtEcrit("sécurité|securite|gtc|gtb|controle d'acces", $lettreColonne.'46' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble );
      chercheEtEcrit("hall",                                $lettreColonne.'47' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble );
      chercheEtEcrit("surveillance|video(?!phones?)",       $lettreColonne.'48' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble );
      chercheEtEcrit(" rie ",                               $lettreColonne.'50' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble );
      chercheEtEcrit("cafétéria|cafeteria",                 $lettreColonne.'51' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble );
      chercheEtEcrit("resto club|restoclub|restaurant club",$lettreColonne.'52' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble );
      chercheEtEcrit("fitness",                             $lettreColonne.'53' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble );
      chercheEtEcrit("auditorium",                          $lettreColonne.'54' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble );
      chercheEtEcrit("concièregerie|concieregerie|gardien", $lettreColonne.'55' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble, $construction );
      chercheEtEcrit("creche|crêche",                       $lettreColonne.'56' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble );
      chercheEtEcrit("hotesse|hôtesse|accueil",             $lettreColonne.'57' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble, $construction);
      chercheEtEcrit("capacité|capacite",                   $lettreColonne.'35' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble, $construction );
      chercheEtEcrit("hauteur libre",                       $lettreColonne.'36' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble, $construction  );
      chercheEtEcrit("profondeur plateau",                  $lettreColonne.'37' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble, $construction  );
      chercheEtEcrit("trame fenetre|trame fenêtre",         $lettreColonne.'38' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble, $construction  );
      chercheEtEcrit(" plénum ",                            $lettreColonne.'39' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble, $construction  );
      chercheEtEcrit("plafond",                             $lettreColonne.'40' ,$sheet, $AmenagementAdr, $AmenagementOffre, $AgencementImmeuble, $construction  );
 
      // Saisie directe des données
 
      $sheet->setCellValue($lettreColonne.'3', $offre);
 
      $nomImmeuble = iconv("ISO-8859-15//TRANSLIT","UTF-8","$nomBien");
      $sheet->setCellValue($lettreColonne.'4', $nomImmeuble);
 
      //$nomImmeubleAdresse = iconv("ISO-8859-15//TRANSLIT","UTF-8","$nomBien\n$noRue $rue $codePostal $ville");
//      $sheet->setCellValue($lettreColonne.'41', $nomImmeubleAdresse);
//      $sheet->setCellValue($lettreColonne.'73', $nomImmeubleAdresse);
 
      $adresse = iconv("ISO-8859-15//TRANSLIT","UTF-8","$noRue $rue $codePostal $ville");
      $sheet->setCellValue($lettreColonne.'5', $adresse);
 
      $surfaceTotale = number_format($surfaceTotale,0,',',' ');
      $surfaceTotale = ($surfaceTotale!=NULL || $surfaceTotale!= 0)?$surfaceTotale.' m²':''; // Vérification de la présence d'une surface
      //$surfaceTotale = iconv("ISO-8859-15//TRANSLIT","UTF-8", $surfaceTotale);
      $sheet->setCellValue($lettreColonne.'7', $surfaceTotale);
 
      $dateDispo = iconv("ISO-8859-15//TRANSLIT","UTF-8", $dateDispo);
      $sheet->setCellValue($lettreColonne.'28', $dateDispo);
 
      $anneeConstruction = iconv("ISO-8859-15//TRANSLIT","UTF-8", $anneeConstruction);
      $sheet->setCellValue($lettreColonne.'29', $anneeConstruction);
 
      //$construction = iconv("ISO-8859-15//TRANSLIT","UTF-8", $construction);
      //$sheet->setCellValue($lettreColonne.'26', $construction);
 
      $dpeOuDpeLettre = ($dpeLettre!=NULL)?$dpeLettre:$dpe;                 // Vérification de la présence d'un dpe sous forme de lettre ou de valeur
      $dpeOuDpeLettre = iconv("ISO-8859-15//TRANSLIT","UTF-8", $dpeOuDpeLettre);
      $sheet->setCellValue($lettreColonne.'19', $dpeOuDpeLettre);
 
      $erp = ($erp==1)?'Oui':'Non';                                          // Vérification de la valeur de l'ERP
      $erp = iconv("ISO-8859-15//TRANSLIT","UTF-8", $erp);
      $sheet->setCellValue($lettreColonne.'21', $erp);
 
      $igh = ($igh==1)?'Oui':'Non';                                          // Vérification de la valeur de l'IGH
      $igh = iconv("ISO-8859-15//TRANSLIT","UTF-8", $igh);
      $sheet->setCellValue($lettreColonne.'20', $igh);
 
      $independant = ($independant==1)?'Oui':'Non';                          // Vérification de la valeur de indépendant
      $independant = iconv("ISO-8859-15//TRANSLIT","UTF-8", $independant);
      $sheet->setCellValue($lettreColonne.'27', $independant);
 
      $etatImmeuble = iconv("ISO-8859-15//TRANSLIT","UTF-8", $etatImmeuble);
      $sheet->setCellValue($lettreColonne.'26', $etatImmeuble);
 
      $surfaceDiv = iconv("ISO-8859-15//TRANSLIT","UTF-8", $surfaceDiv);
      $sheet->setCellValue($lettreColonne.'30', $surfaceDiv);
 
      $txBureaux = ($txBureaux==NULL)?'':$txBureaux.' €/m²/an';
      $sheet->setCellValue($lettreColonne.'65', $txBureaux);
 
      $impotFoncier = ($impotFoncier==NULL)?'':$impotFoncier.' €';
      $sheet->setCellValue($lettreColonne.'64', $impotFoncier);
 
      //  A voir !  dans quelle ligne mettre depot de garantie  $depotGarantie = iconv("ISO-8859-15//TRANSLIT","UTF-8", $depotGarantie);
      //                                                        $sheet->setCellValue($lettreColonne.'71', $depotGarantie);
 
      $accrocheTitre = iconv("ISO-8859-15//TRANSLIT","UTF-8", $accrocheTitre);
      $sheet->setCellValue($lettreColonne.'68', $accrocheTitre);
 
      // Données provenant des lots
 
      $charge = ($charge==NULL)?'':$charge.' HT/m²/an';
      $sheet->setCellValue($lettreColonne.'62', $charge);             // Correspond à la ligne : "charges hors fiscalité"
 
      $bail = iconv("ISO-8859-15//TRANSLIT","UTF-8", $bail);
      $sheet->setCellValue($lettreColonne.'59', $bail);
 
      //$coutBureaux = number_format($coutBureaux,0,',',' ');         // Désactivation provisoire du cout bureau
      //$coutBureaux = ($coutBureaux == NULL)?'':$coutBureaux.' €';   // On met à la place un champ libre "Cout poste de travail"
      //$sheet->setCellValue($lettreColonne.'60', $coutBureaux);
 
      $nbEtages = ($nbEtages!=0)?$nbEtages:'';                        // Vérification de la présence d'un nombre d'étage différent de 0
      $nbEtages = iconv("ISO-8859-15//TRANSLIT","UTF-8", $nbEtages);
      $sheet->setCellValue($lettreColonne.'31', $nbEtages);
 
      $parkingNb = iconv("ISO-8859-15//TRANSLIT","UTF-8", $parkingNb);
      $sheet->setCellValue($lettreColonne.'32', $parkingNb);
 
      $coutParking = iconv("ISO-8859-15//TRANSLIT","UTF-8", $coutParking);
      $sheet->setCellValue($lettreColonne.'63', $coutParking);
    }
  }
 
  // INITIALISATION DES VARIABLES ET TABLEAUX
  $titreBenchmark = stripslashes($_SESSION['titreBenchmark']);
 
  $tColonnes = array('C','E','G','I','K');
 
  $tStructureFichier = array("surface"              =>  7,
                          "moyensTransport"         =>  8,
                          "distanceTrans"           =>  9,
                          "accesRoutier"            =>  10,
                          "metro"                   =>  11,
                          "rer"                     =>  12,
                          "sncf"                    =>  13,
                          "tramway"                 =>  14,
                          "bus"                     =>  15,
                          "velib"                   =>  16,
                          "navette"                 =>  17,
                          "qualifEnvironnement"     =>  18,
                          "dpe"                     =>  19,
                          "igh"                     =>  20,
                          "erp"                     =>  21,
                          "codeTravail"             =>  22,
                          "labels"                  =>  23,
                          "certifs"                 =>  24,
                          "descripImmeuble"         =>  25,
                          "etat"                    =>  26,
                          "independant"             =>  27,
                          "dispo"                   =>  28,
                          "dateConctruction"        =>  29,
                          "taillePlateaux"          =>  30,
                          "nbEtages"                =>  31,
                          "nbParkings"              =>  32,
                          "ratioParkings"           =>  33,
                          "prestations"             =>  34,
                          "capacite"                =>  35,
                          "hauteurLibre"            =>  36,
                          "profondeurPlateau"       =>  37,
                          "trameFenetre"            =>  38,
                          "hauteurPlenum"           =>  39,
                          "systemeFauxPlafond"      =>  40,
                          "systemeClim"             =>  41,
                          "systemeSourceChauffage"  =>  42,
                          "ascenseurs"              =>  43,
                          "monteCharge"             =>  44,
                          "groupeElectro"           =>  45,
                          "gtbGtc"                  =>  46,
                          "hall"                    =>  47,
                          "videoSurveillance"       =>  48,
                          "services"                =>  49,
                          "rie"                     =>  50,
                          "cafeteria"               =>  51,
                          "restoClub"               =>  52,
                          "fitness"                 =>  53,
                          "auditorium"              =>  54,
                          "concieregerie"           =>  55,
                          "creche"                  =>  56,
                          "hotesse"                 =>  57,
                          "condFin"                 =>  58,
                          "bail"                    =>  59,
                          "coutPosteTravail"        =>  60,
                          "coutRie"                 =>  61,
                          "chargesHF"               =>  62,
                          "parking"                 =>  63,
                          "fiscalite"               =>  64,
                          "taxeFoncier"             =>  65,
                          "coutGlobalHF"            =>  66);
 
  // CREATION OBJET PHPEXCEL
  $objReader = new PHPExcel_Reader_Excel2007();
  $workbook = $objReader->load("modeleBenchmarkV2.xlsx");
  $sheet = $workbook->getActiveSheet();
 
  // SAISIE DE TITRE
  $sheet->setCellValue('A1', '       '.$titreBenchmark);
 
  // CALCUL ET SAISIE DE LA DATE
  $date = date("d/m/Y", time());
  $sheet->setCellValue('A3', 'Date : '.$date);
 
  // LE SCRIPT
  if(isset($_SESSION['offre1']) or !empty( $_SESSION['offre1']))
  {
    $offre1 = $_SESSION['offre1'];
    insererPhotoOffre($offre1, 1, $tColonnes, $workbook);
    renseignerOffre($offre1, 1, $tColonnes, $link, $sheet);
  }
 
  if(isset($_SESSION['offre2']) or !empty( $_SESSION['offre2']))
  {
    $offre2 = $_SESSION['offre2'];
    insererPhotoOffre($offre2, 2, $tColonnes, $workbook);
    renseignerOffre($offre2, 2, $tColonnes, $link, $sheet);
  }
 
  if(isset($_SESSION['offre3']) or !empty( $_SESSION['offre3']))
  {
    $offre3 = $_SESSION['offre3'];
    insererPhotoOffre($offre3, 3, $tColonnes, $workbook);
    renseignerOffre($offre3, 3, $tColonnes, $link, $sheet);
  }
 
  if(isset($_SESSION['offre4']) or !empty( $_SESSION['offre4']))
  {
    $offre4 = $_SESSION['offre4'];
    insererPhotoOffre($offre4, 4, $tColonnes, $workbook);
    renseignerOffre($offre4, 4, $tColonnes, $link, $sheet);
  }
 
  if(isset($_SESSION['offre5']) or !empty( $_SESSION['offre5']))
  {
    $offre5 = $_SESSION['offre5'];
    insererPhotoOffre($offre5, 5, $tColonnes, $workbook);
    renseignerOffre($offre5, 5, $tColonnes, $link, $sheet);
  }
 
  // Suppression de la rubrique Cahier des charges utilisateur
 
  if($_SESSION['typeBenchmark'] == "proprietaire") // Si le benchmark est de type propriétaire
  {
     $sheet->removeRow(69, 1);                     // On supprime la ligne de la rubrique Cahier des charges utilisateur
  }
 
  // Saisie des coefficients :
 
  foreach($tStructureFichier as $cleCourrante => $valeurCourrante)
  {
    if($_POST[$cleCourrante])
    {
      $sheet->setCellValue('L'.$valeurCourrante, $_POST[$cleCourrante]);
    }
  }
 
  // Supression des lignes non cochées
 
  // On fait un tri décroissant des valeur du tableau afin de supprimer les lignes à partir du bas (pour éviter les décalages)
  arsort($tStructureFichier);
 
  foreach($tStructureFichier as $cleCourrante => $valeurCourrante)
  {
    if(!$_POST[$cleCourrante])
    {
      $sheet->removeRow($valeurCourrante, 1);
    }
  }
 
  header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  header('Content-Disposition: attachment;filename="testBenchmark.xlsx"');
  header('Cache-Control: max-age=0');
 
  $writer = PHPExcel_IOFactory::createWriter($workbook, 'Excel2007');
  $writer->save('php://output');
}
Ci-joint le fichier modèle (que j'ai mis en xls au lieu de xslx juste pour l'upload - sinon pas accepté) :

Merci,
Fichiers attachés
Type de fichier : xls BenchmarkDebug.xls (17,5 Ko, 4 affichages)
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 15h23   #2
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 175
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 175
Points : 6 462
Points : 6 462
Bonjour

Réponse ici
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 17h38   #3
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Merci Maitre .
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h10.


 
 
 
 
Partenaires

Hébergement Web