IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[PHPExcel] Génération de Fichiers Excel [Tutoriel]


Sujet :

Bibliothèques et frameworks PHP

  1. #141
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,

    Est-il possible d'utiliser cette bibliothèque avec Excel 2010 ?

    Merci d'avance pour votre réponse et bon réveillon.

    beegees

  2. #142
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Bonjour,
    Cela fonctionne sans soucis avec 2010.

    Citation Envoyé par beegees Voir le message
    Bonjour,


    Est-il possible d'utiliser cette bibliothèque avec Excel 2010 ?

    Merci d'avance pour votre réponse et bon réveillon.

    beegees

  3. #143
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,

    Bonne année et merci pour ta réponse.

    beegees

  4. #144
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour et Bonne Année à tous.

    Merci pour ce sympathique tutoriel.

    Bien que débutant depuis peu avec PHP, je n'ai eu aucun mal à générer un fichier Excel en suivant les explications.

    Par contre, je rencontre un problème à l'ouverture du fichier dans Excel 2003.

    Le choix technique s'est porté sur un fichier de type Excel 5 car nos clients peuvent exploiter à peu près n'importe quelle version du tableur.

    Le fichier s'ouvre sans la moindre difficulté en employant Open Office Calc. Par contre, en utilisant Excel 2003, j'obtiens un message indiquant que le fichier est endommagé et qu'il a tenté de récupérer les informations.

    Je récupère bien les données, mais les styles ont disparu.

    Un test d'ouverture du fichier généré avec Excel 2007 ne semble pas présenter de problème.

    Pour appliquer les styles, j'utilise applyFromArray() de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $workSheet->getStyle($cellCoordinates)->getFont()->applyFromArray($normalStyle);
    Le style est défini de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	$normalStyle =	array(
    						'name'      => 'Arial',
    						'bold'      => false,
    						'italic'    => false,
    						'underline' => PHPExcel_Style_Font::UNDERLINE_NONE,
    						'strike'    => false,
    						'color'     => array(
    							'rgb' => '00FF00'
    						)
    					);
    Nous utilisons actuellement PHPExcel 1.6.7.

    Quelqu'un aurait-il une piste vers laquelle m'orienter ?

    D'avance merci.

  5. #145
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    [RESOLU] J'ai fini par mettre PHPExcel à jour avec la version 1.7.6 et ça marche comme sur des roulettes.

  6. #146
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    À partir de PHPExcel j'aimerai pouvoir ouvrir un fichier .xlsm en lecture puis sauvegarder une copie de ce fichier après que l'ensemble des macros aient été interprétées.
    Le but est de générer ce nouveau xls à partir du xlsm depuis le serveur qui lui possède l'accès à la BDD nécessaire.

    Est-ce une opération possible ?
    Sachant que le fichier xlsm de base est vraiment bourré de macros et que la plupart accèdent à la BDD.

    d'avance merci.

  7. #147
    Membre habitué Avatar de scorpking
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 232
    Points : 181
    Points
    181
    Par défaut
    bonjour merci pour ce tuto il m'as bien aider mais je bloque sur un point actuellement

    j'utilise phpexcel sans la class maitrephylos
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $workbook = new PHPExcel;
    $sheet = $workbook->getActiveSheet();
     
    $sheet->duplicateStyleArray(array('alignment'=>array('wrap'=>true), $tableau_lettres[$i].'2:'.$tableau_lettres[$i].$ligne)); //version d'origine
     
     
    $sheet->duplicateStyleArray(array('alignment'=>array('wrap'=>true), "A5:K5"));//version de test pour debug
    j'obtien le même message d'erreur que la personne sur la page précédente

    Fatal error: Uncaught exception 'Exception' with message 'Cell coordinate can not be zero-length string.' in /var/svn/staff/adrien/socle-site/class/PHPExcel/PHPExcel_Cell.class.php on line 506
    Exception: Cell coordinate can not be zero-length string. in /var/svn/staff/adrien/socle-site/class/PHPExcel/PHPExcel_Cell.class.php on line 506
    PHPExcel_Worksheet->duplicateStyleArray( $pStyles = array ('alignment' => array ('wrap' => TRUE), 0 => 'A5:K5'), $pRange = ???, $pAdvanced = ??? )
    PHPExcel_Style->applyFromArray( $pStyles = array ('alignment' => array ('wrap' => TRUE), 0 => 'A5:K5'), $pAdvanced = TRUE )
    PHPExcel_Cell::coordinateFromString( $pCoordinateString = '' )


    voici les étapes de passages des fonctions avec mes coordonnée de debug en dure j'ai oublier un point pour initialiser les coordonnée je n'ai rien vu a ce sujet dans la page 4 du tuto




    edit : je vien de trouver en fait
    il y a une erreur de code dans ton tuto dans la partie
    4.2.1.3. Les autres styles de PHPExcel_Style_Alignment


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $sheet->duplicateStyleArray(array(
             'alignment'=>array(
                                'wrap'=>true), 'A21:F37');//ta version il manque une parenthèse fermante
     
     
    $sheet->duplicateStyleArray(array(
             'alignment'=>array(
                                'wrap'=>true)), 'A21:F37');//corrigé ^^
    c'est pareil pour tous les codes duplicateStyleArray de la page dailleur

  8. #148
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    @scorpking vérifie que le variables $tableau_lettres et $ligne ne sont pas vide ou null

  9. #149
    Membre habitué Avatar de scorpking
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 232
    Points : 181
    Points
    181
    Par défaut
    @MaitrePylos je viens d’éditer mon message quand tu a répondu j'ai trouver d'où venais l'erreur

  10. #150
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    merci

  11. #151
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Format ou extension invalide après le téléchargement
    Salut Pylos,

    Ton tuto m'a été très utile, merci. Je rencontre maintenant le même problème que 2 personnes y a environ 2 ans et demi de ça maintenant que vous n'aviez pas résolu, en tout cas pas dans ces commentaires. Lorsque que j'enregistre mon fichier sur le serveur, aucun problème, il s'ouvre normalement. Mais lorsque je veux le télécharger depuis mon site, j'ai un message d'erreur d'Excel lors de l'ouverture qui me dit Format ou extension invalide.
    Avez-vous pu trouver une solution depuis ?

    Cordialement,
    Fabien.

  12. #152
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Je peux avoir le lien du site ?

  13. #153
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Solution
    Il s'agit d'un intranet donc tu n'aurais pas pu essayer, merci quand même.
    Cependant j'ai résolu le problème. J'ai trouvé un enième bout de code sur internet destiné à ouvrir le fichier et là, ça marche ! Pour ceux à qui ça pourrait servir, le voilà:
    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
     
    <?php
    $file = 'nom_du_fichier_sur_votre_serveur_que_vous_voulez_dl.xlsx';  
     
    if (file_exists($file)) 
    { 
       header('Content-Description: File Transfer'); 
       header('Content-Type: application/octet-stream'); 
       header('Content-Disposition: attachment; filename='.basename($file)); 
       header('Content-Transfer-Encoding: binary'); 
       header('Expires: 0'); 
       header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
       header('Pragma: public'); 
       header('Content-Length: ' . filesize($file)); 
       ob_clean(); 
       flush(); 
       readfile($file); 
       exit;  
    }  
    ?>
    Merci Pylos !

  14. #154
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Salut MaitrePylos (et les autres ),

    Je viens vers vous car j'ai un petit problème avec PHPExcel.

    Tout d'abord un grand merci à MaitrePylos pour ce superbe tuto qui m'a vraiment bien aidé.

    Voici mon problème :

    J'ai une durée en bdd SQL que je récupère dans mon script php (cette durée est un varchar(50)).

    Ensuite, je mets cette durée dans une feuille Excel, en précisant bien que ma cellule est une date.

    Cependant, dans Excel, je ne peux faire aucun calcul sur cette durée (j'aimerais faire une somme), et la durée est collée à gauche de la cellule, lorsque je double clique dessus et fais uniquement "entrée" pour valider, le nombre se remet à droite de la cellule et la somme fonctionne.

    J'imagine donc que c'est une bêtise dans le format de la durée (je l'ai en H:i:s en PHP). Cependant, modifier le format de la cellule est inutile, cela ne change rien, je dois vraiment modifier le contenu "manuellement" pour que cela fonctionne, et vu que c'est une boucle, cela serait un peu long de faire cela.


    Voici un petit bout de code, j'espère avoir été clair sur mon problème :

    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
    <?php
    include ('include/config.php');
    include('auth.php');
    include 'Classes/PHPExcel.php';
    include 'Classes/PHPExcel/Writer/Excel2007.php';
    include 'Classes/PHPExcel/Writer/Excel5.php';
    //Recup données en session pour construire requete
    $datedeb = $_SESSION['DateDeb'];
    $datefin = $_SESSION['DateFin'];
    $prestataire = $_SESSION['User_recherche'];
    $reqstr = $_SESSION['reqstr'];
    //Instanciation de l'objet excel
    $workbook = new PHPExcel;
    $sheet = $workbook->getActiveSheet();
    $sheet->getStyle('H2:H999')->getNumberFormat()->applyFromArray(
                array(
                    'code' => PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME6
                )
            );
    //Paramétrage de la premiere ligne, pour les titres
    $cpt_lig = 1;
    $sheet->setCellValueByColumnAndRow(0, $cpt_lig, 'Date Debut');
    $sheet->setCellValueByColumnAndRow(1, $cpt_lig, 'Date Fin');
    $sheet->setCellValueByColumnAndRow(2, $cpt_lig, 'Description');
    $sheet->setCellValueByColumnAndRow(3, $cpt_lig, 'Catégorie');
    $sheet->setCellValueByColumnAndRow(4, $cpt_lig, 'Prestataire');
    $sheet->setCellValueByColumnAndRow(5, $cpt_lig, 'Code Client');
    $sheet->setCellValueByColumnAndRow(6, $cpt_lig, 'Code Etat');
    $sheet->setCellValueByColumnAndRow(7, $cpt_lig, 'Duree');
    $sheet->setCellValueByColumnAndRow(8, $cpt_lig, 'Lieu');
    $cpt_lig = 2;
    if ($prestataire == "-"){ // Requete si pas de prestataire choisi
    	$query = mysql_query("SELECT * FROM vieilles_presta WHERE IsArchive = 0 AND DateDeb >= '".$_SESSION['DateDeb']."' AND DateFin <= '".$_SESSION['DateFin']."' ".$_SESSION['reqstr']." ");
    }
    else{ //Requete avec le choix du prestataire
    	$query = mysql_query("SELECT * FROM vieilles_presta WHERE Prestataire='".$_SESSION['User_recherche']."' AND DateDeb >= '".$_SESSION['DateDeb']."' AND DateFin <= '".$_SESSION['DateFin']."' ".$_SESSION['reqstr']." ");
    }
    while($resul = mysql_fetch_array($query)){ //Récup du résultat et construction des cellules du fichier excel
    	$dateDeb = date("d/m/Y H:i:s",strtotime($resul['DateDeb']));
    	$sheet->setCellValueByColumnAndRow(0, $cpt_lig, $dateDeb);
    	$dateFin = date("d/m/Y H:i:s",strtotime($resul['DateFin']));
    	$sheet->setCellValueByColumnAndRow(1, $cpt_lig, $dateFin);
    	$description = ($resul['Description']);
    	$sheet->setCellValueByColumnAndRow(2, $cpt_lig, $description);
    	$categ = $resul['Categ'];
    	$sheet->setCellValueByColumnAndRow(3, $cpt_lig, $categ);
    	$id = $resul['IDAuto'];
    	$Presta = $resul['Prestataire'];
    	$sheet->setCellValueByColumnAndRow(4, $cpt_lig, $Presta);
    	$Client = $resul['CodeClient'];
    	$sheet->setCellValueByColumnAndRow(5, $cpt_lig, $Client);
    	$Etat = $resul['CodeEta'];
    	$sheet->setCellValueByColumnAndRow(6, $cpt_lig, $Etat);
    	$duree = $resul['Duree'];
    	$duree = date("H:i:s", strtotime($duree));
    	$sheet->setCellValueByColumnAndRow(7, $cpt_lig, $duree);
    	$lieu = ($resul['Lieu']);
    	$sheet->setCellValueByColumnAndRow(8, $cpt_lig, $lieu);
    	$cpt_lig++;
    }
     
     
    $sheet->setCellValueByColumnAndRow(9, 1,'=SUM(H1:H999)');		
    //Définition de la taille des cellules
    $sheet->getColumnDimension('A')->setWidth(19);
    $sheet->getColumnDimension('B')->setWidth(19);
    $sheet->getColumnDimension('C')->setWidth(40);
    $sheet->getColumnDimension('D')->setWidth(5);
    $sheet->getColumnDimension('E')->setWidth(5);
    $sheet->getColumnDimension('F')->setWidth(8);
    $sheet->getColumnDimension('G')->setWidth(8);
     
    // $sheet->setCellValueByColumnAndRow(7, $cpt_lig, $Client);
     
    $sheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
    //Formatage de la sortie, pour pouvoir télécharger le fichier
    $writer = new PHPExcel_Writer_Excel2007($workbook);
    //$writer->setOffice2003Compatibility(true);
    header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition:inline;filename=Prestations-'.$prestataire.'.xlsx ');
    $writer->save('php://output');
    ?>

    Je précise que faire la cellule "somme" à la main dans le fichier Excel ne fonctionne pas non plus. J'utilises Excel 2003.

    Voilà, j'espère ne pas vous avoir dérangé pour une grosse bêtise, bonne journée/soirée à tous et merci de m'avoir lu.

  15. #155
    Membre actif
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 235
    Points
    235
    Par défaut CustomProperties
    Salut,

    Je dois éditer des fichiers Excel5 (pas le choix) pour vérifier qu'ils contiennent un certain nombre d'informations obligatoires, notamment dans les propriétés personnalisées.

    Hors, le code suivant ne me renvoie rien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $prop = $oExcel->getProperties();
    $perso = $prop->getCustomProperties();
    $prop->isCustomPropertySet("Révision");
    L'objet $oExcel est correct, j'accède par exemple aux métadonnées, à la liste des feuilles...
    Par contre, dès que j'attaque les "CustomProperties", je n'ai plus rien. Pas d'erreur, je récupère juste des chaînes vides alors que les propriétés sont bien renseignées.

    Si quelqu'un avait un exemple de lecture/écriture de propriétés personnalisées, ça m'arrangerait.

    Une dernière chose pendant que j'y suis : y a-t-il un moyen de lire le contenu de textes situés dans des "shapes" ?

    A+

    Gilles

  16. #156
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Pour mon problème de dates(et d'addition des heures en particulier), j'ai trouvé la solution ici

    En gros, j'ai juste rajouté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_AdvancedValueBinder() );
    //Définition du format
    $sheet->getStyleByColumnAndRow(10, 1)
    	  ->getNumberFormat()
    	  ->setFormatCode("[h]:mm");
    Et du coup, mon heure est vraiment considérée comme une heure, et je peux donc effectuer des calculs dessus, si cela peut aider d'autres personnes .

    Bonne journée à tous.

  17. #157
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    J'ai crée un sujet mais je préfère également poster mon problème ici

    je viens vers vous car j'ai un problème d'indice qui ne débute pas à zero lorsque j'utilise PhpExcel

    Je vous fourni le code

    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
    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
    <?php 
    session_start();
    require_once 'PHPExcel.php';
    require_once 'PHPExcel/Writer/Excel5.php';
    require_once 'includes/identifiants.php';
    require_once 'includes/fonction.php';
     
    //error_reporting(E_ALL & ~E_NOTICE);
     
    $connect=connect();
     
    $sql = "select * from shp_export where document = '19' order by code_commu, nom";
    $rs=pg_exec($connect,$sql);	
    $k=0;
     
    while ($val = pg_fetch_array($rs))
    						{ 
     
    							if($k%118 == 0)
    							{
    								$tableau[$k] = $val; //permet d'avoir l'enregistrement en double, pour pouvoir afficher le nom de la commune regroupant les Lieux dits
    								$k++;
    								$tableau[$k] = $val;
    								$k++;
     
    							}
    							else
    							if($val['code_commu'] != $comm)
    							{
    								$tableau[$k] = $val;
    								$k++;
    								$tableau[$k] = $val;
    								$k++;
     
    							}
    							else
    							{
    								$tableau[$k] = $val;
    								$k++;
    							}
    							$comm = $val['code_commu'];
    						}
    						$NbreData = $k;
     
     
    $NbrLigne = 118;
    if ($NbreData != 0) {
     
     
    $workbook = new PHPExcel();
     
    $sheet = $workbook->getActiveSheet();
     
    //---------------------------------En tête----------------------------------------------/
    $sheet->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3); //format A3
     
    $sheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); //orientation Portrait
     
    //--------------------Initialisation des tailles des colonnes------------------------------------//
    $sheet->getColumnDimension('A')->setWidth(0.9595); 
    $sheet->getColumnDimension('B')->setWidth(15.85);
    $sheet->getColumnDimension('C')->setWidth(5.69);
    $sheet->getColumnDimension('D')->setWidth(3.28);
    $sheet->getColumnDimension('E')->setWidth(3.28);
    $sheet->getColumnDimension('F')->setWidth(0.9595);
    $sheet->getColumnDimension('G')->setWidth(15.85);
    $sheet->getColumnDimension('H')->setWidth(5.69);
    $sheet->getColumnDimension('I')->setWidth(3.28);
    $sheet->getColumnDimension('J')->setWidth(3.28);
    $sheet->getColumnDimension('K')->setWidth(0.9595);
    $sheet->getColumnDimension('L')->setWidth(15.85);
    $sheet->getColumnDimension('M')->setWidth(5.69);
    $sheet->getColumnDimension('N')->setWidth(3.28);
    $sheet->getColumnDimension('O')->setWidth(3.28);
    $sheet->getColumnDimension('P')->setWidth(0.9595);
    $sheet->getColumnDimension('Q')->setWidth(15.85);
    $sheet->getColumnDimension('R')->setWidth(5.69);
    $sheet->getColumnDimension('S')->setWidth(3.28);
    $sheet->getColumnDimension('T')->setWidth(3.28);
    $sheet->getColumnDimension('U')->setWidth(0.9595);
    $sheet->getColumnDimension('V')->setWidth(15.85);
    $sheet->getColumnDimension('W')->setWidth(5.69);
    $sheet->getColumnDimension('X')->setWidth(3.28);
    $sheet->getColumnDimension('Y')->setWidth(3.28);
    $sheet->getColumnDimension('Z')->setWidth(0.9595);
     
    //------------------------------Marge de la page----------------------------//
     
    $sheet->getPageMargins()->setTop(0.20); //Valeur en inches
    $sheet->getPageMargins()->setRight(0.156);
    $sheet->getPageMargins()->setLeft(0.2535);
    $sheet->getPageMargins()->setBottom(0.20);
     
    $compteurPage = 1;
    $ligneEntete = 0;
    $colEntete = 0;
    $i = 0;
    for ($i=0; $i<$NbrLigne; $i++) {
     
     
     
     
    		$j = 0;
     
     
    while (($i+($j*$NbrLigne))%$NbrLigne==$i && ($i+($j*$NbrLigne))<$NbreData) 
    		{
    		$k = ($i+($j*$NbrLigne));
     
     
     
    			$ligneExcel = lineExcel($i, $compteurPage);
    			$colExcel = colExcel($j);
     
    			$sheet->setCellValueByColumnAndRow($colExcel, $ligneExcel, $k);
     
     
    			$j++;
    			if($k%590 == 0 && $k>0)
    			{
    			$compteurPage++;
    			}
     
    		}
     
     
    }
     
     
    $writer = new PHPExcel_Writer_Excel5($workbook);
    $records = './fichiertest.xls';
    $writer->save($records);
    unset($workbook);
     
    ob_clean();
     
    echo'<a href="./fichiertest.xls">Fichier Excel</a>';
     
    }
     
     
     
    else
    {}
    ?>
    code des fonctions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function lineExcel($vali, $Page)
    {
    $linex = ($vali+1) + (2 * $Page) + (118 * ($Page - 1));
    return $linex;
    }
     
    function colExcel($valj)
    {
    $modulo = $valj%5;
    $colex  = ($modulo + 1) + (5 * $modulo) - $modulo;
    return $colex;
    }//fin fonction
    J'utilise la méthode pour ranger les données par colonne.

    Voici le lien de téléchargement du fichier XLS

    http://www.toofiles.com/fr/oip/docum...hiertest7.html

    Merci

    EDIT : Problème résolu, je n'ai pas utiliser de modulo dans le While.

  18. #158
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Tout d'abord, bonjour à tous et merci aux utilisateurs de forum que je consulte régulièrement.

    je suis également utilisateur de cette superbe librairies PHP Excel en version 1.7.6 et je viens de parcourir toutes les pages de ce topic

    je génère régulièrement des exports mais il y a toujours une chose que je n'arrive pas à faire fonctionner correctement.

    voici par exemple un bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $date = mdate("%d/%m/%Y",strtotime(now()));			
    $sheet->setCellValueByColumnAndRow($myCol++,$myRow, $date);
    j'obtiens donc comme résultat : la date du jour dans des cellules Excel.
    mais le problème , c'est que ce n'est pas reconnu en tant que date
    car même si l'affichage est correcte : je n'arrive pas à faire des filtres de la date la plus récente à la plus ancienne par exemple ,

    Des idées SVP ?

  19. #159
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    @LTF_MIKE = on en parle deux post plus haut avec la solution
    @gfevrier = fais un var_dump de $perso pour voir

  20. #160
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    merci beaucoup pour ta réponse,
    après étude et relecture , j'ai utilisé cette méthode qui fonctionne parfaitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sheet->setCellValueByColumnAndRow($myCol++, $myRow, PHPExcel_Shared_Date::stringToExcel(trim($myData['date'])));

Discussions similaires

  1. [Excel] Bug I.Explorer après génération de fichiers excel
    Par wtoueress dans le forum Bibliothèques et frameworks
    Réponses: 20
    Dernier message: 30/06/2008, 13h40
  2. Génération de fichier Excel Ou Word
    Par Maz85 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 23/08/2007, 17h28
  3. Génération de fichiers Excel à partir de code HTML
    Par grincheux dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/06/2007, 14h39
  4. [Excel] Génération de fichiers
    Par abidi_niz dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/07/2006, 09h29
  5. [VBA-E]Génération de fichiers Excel à partir d'un autre
    Par cyrille2k5 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/05/2006, 10h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo