From 739c7625ed42e04cada3a6d95b98868cec1c8289 Mon Sep 17 00:00:00 2001 From: Clecle Date: Sat, 21 Nov 2015 12:28:08 +0100 Subject: [PATCH] phpExcel mise en forme du code / commentaires --- manager/phpExcel.php | 103 ++++++++++++++++++++++++++++--------------- 1 file changed, 67 insertions(+), 36 deletions(-) diff --git a/manager/phpExcel.php b/manager/phpExcel.php index 9600dea..d9f0da8 100755 --- a/manager/phpExcel.php +++ b/manager/phpExcel.php @@ -3,30 +3,39 @@ function xlsx_switch_lvl1($request, $answer){ //inclusion des classes de PHPExcel et des fichiers necessaires + require_once __ROOT__.DIRECTORY_SEPARATOR.join(DIRECTORY_SEPARATOR, array("src", "phpexcel", "Classes", "PHPExcel.php")); require_once __ROOT__.DIRECTORY_SEPARATOR.join(DIRECTORY_SEPARATOR, array("src", "phpexcel", "Classes", "PHPExcel", "Writer", "Excel2007.php")); - //TABLE DE ROUTAGE DE LA FONCTION + /* [1] TABLE DE ROUTAGE + ============================================================*/ + switch ($request->level_1) { - //EXPORTATION DES LISTE D'ELEVE DE L'ANNEEE EN FORMAT EXCEL + /***************************************************/ + /* Export la liste des étudiants d'un groupe donné */ + /***************************************************/ case 'export_userlist_group': - //Si on a bien les listes de groupes - if(isset($request->grouplist) && $request->grouplist != null){ + // Vérification de la présence des groupes + + if( isset($request->grouplist) && $request->grouplist != null ){ + + //On crée une instance du fichier xls,activation de la feuille - //On crée une instance du fichier xls, ainsi que de la feuille active $workbook = new PHPExcel(); $sheet = $workbook->getActiveSheet(); $writer = new PHPExcel_Writer_Excel2007($workbook); - //on défini les paramètresdu document + // Définition des paramètres du document + $workbook->getProperties()->setCreator($_SESSION['identifiant']); $workbook->getProperties()->setLastModifiedBy('ACGA'); $workbook->getProperties()->setTitle('Liste étudiants '.$_SESSION['annee']); - //On définit les + // Définition du format des cellules (document Excel) + $sheet->getColumnDimension('B')->setWidth(20); $sheet->getColumnDimension('C')->setWidth(20); $sheet->getColumnDimension('D')->setWidth(15); @@ -35,7 +44,8 @@ function xlsx_switch_lvl1($request, $answer){ $sheet->getColumnDimension('G')->setWidth(12); $sheet->getColumnDimension('H')->setWidth(12); - //on prépare le tableau + // Écriture des colonnes du tableau + $sheet->setCellValue('B1', "GROUPE DES ETUDIANTS DE L'ANNEE ".$_SESSION['annee']); $sheet->setCellValue('A2', date("d/m/Y G:m")); $sheet->setCellValue('A4', 'Numéro'); @@ -47,17 +57,21 @@ function xlsx_switch_lvl1($request, $answer){ $sheet->setCellValue('G4', 'Code IAE'); $sheet->setCellValue('H4', 'IAE Etape'); - //On remplie le tableau des valeurs récupérées dans la requête + // Écriture des valeurs dans le document Excel + $index = 5; - foreach ($request->grouplist as $group) { + foreach ( $request->grouplist as $group ) { + $groupeName = $group['nom']; - $formation = $group['formation']; - foreach ($group['userlist'] as $student) { + $formation = $group['formation']; + + foreach ( $group['userlist'] as $student ) { + $sheet->setCellValue('A'.$index, $index-4); $sheet->setCellValue('B'.$index, $student['nom']); $sheet->setCellValue('C'.$index, $student['prenom']); $sheet->setCellValue('D'.$index, $student['identifiant']); - //$sheet->setCellValue('E'.$index, $student['sexe']); + $sheet->setCellValue('E'.$index, $student['sexe']); $sheet->setCellValue('F'.$index, $student['mail']); $sheet->setCellValue('G'.$index, $formation); $sheet->setCellValue('H'.$index, $groupeName); @@ -65,7 +79,10 @@ function xlsx_switch_lvl1($request, $answer){ } } + // A refaire, incompréhensible et beaucoup plus facile à faire C.F : export notes--> + //On enregistre ce nouveau fichier, et on lance son téléchargement + $docPath = DIRECTORY_SEPARATOR.join(DIRECTORY_SEPARATOR, array("page", "excelTemplates", "Liste Etudiant ".$_SESSION['annee'].".xlsx")); if(file_exists (__ROOT__.$docPath)){ @@ -80,30 +97,40 @@ function xlsx_switch_lvl1($request, $answer){ $answer->docPath = $docPath; } - //Si on a pas le tableau + // <-- + + // Erreur de paramètre(s) + else { + $answer->request = 'param_error'; } break; - - // IMPORTATION DES LISTE D'ELEVE DE L'ANNEEE EN FORMAT EXCEL + /***************************************************************/ + /* Importation des listes d'élèves de l'année en format Excel */ + /***************************************************************/ case 'import_userlist_group': if(isset($request->docPath)) { - // $inputFileType = 'Excel2007'; + // Récupération du nom du fichier + $inputFileName = $request->docPath; - // Charger le fichier en tant que document Excel + // Chargement du fichier + $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); - // Get sur la première case + // Placement du curseur sur la première case + $sheet = $objPHPExcel->getSheet(0); $mccData = $sheet->rangeToArray('A2:'.$sheet->getHighestColumn().''.$sheet->getHighestRow()); + // Variables stack pour la liste de élèves + $listeEleves = array(); // Boucle sur le format suivant : ligne[0] : [NOM] / ligne[1] : [PRENOM] / ligne[2] : [GROUPE] @@ -113,6 +140,8 @@ function xlsx_switch_lvl1($request, $answer){ $listeEleves[$i++] = array($line[0],$line[1],$line[2]); } + // Vérification de la présence de tous les élèves + if($i-2 == getHighestRow()) { $answer->listeEleves = $listeEleves; @@ -122,6 +151,8 @@ function xlsx_switch_lvl1($request, $answer){ } + // Erreur de paramètre(s) + else { $answer->request='param_error'; @@ -188,24 +219,29 @@ function xlsx_switch_lvl1($request, $answer){ break; */ - - - // IMPORTATION DE NOTES POUR UN CONTROLE DONNEE, UNE FORMATION DONNEE ET UN GROUPE DONNE + /***************************************************************************/ + /* Importation de notes pour un contrôle, une formation et un groupe donné */ + /***************************************************************************/ case 'import_notes': if(isset($request->docPath) && isset($request->formation) && isset($request->groupe) && isset($request->controle)) { - // $inputFileType = 'Excel2007'; + // Récupération du nom du fichier + $inputFileName = $request->docPath; - // Charger le fichier en tant que document Excel + // Chargement du fichier + $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); - // Get sur la première case + // Placement du curseur sur la première case + $sheet = $objPHPExcel->getSheet(0); $mccData = $sheet->rangeToArray('A2:'.$sheet->getHighestColumn().''.$sheet->getHighestRow()); + // Varaible stack pour la liste des notes + $listeNotes = array(); // Boucle sur le format suivant : ligne[0] : [NOM] / ligne[1] : [PRENOM] / ligne[3] : [NOTE] @@ -223,6 +259,9 @@ function xlsx_switch_lvl1($request, $answer){ } } + + // Erreur de paramètre(s) + else { $answer->request='param_error'; @@ -232,6 +271,9 @@ function xlsx_switch_lvl1($request, $answer){ + /***********************/ + /* Importation du MCC */ + /**********************/ case 'import_mcc': if(isset($request->docPath)) { @@ -352,17 +394,6 @@ function xlsx_switch_lvl1($request, $answer){ - - - - - - - - - - - // DEFAULT