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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut [PHPExcel] Génération de Fichiers Excel
    [Mise à jour : 22/07/2010]
    Le tutoriel comporte maintenant une explication sur la modification de feuilles de calculs existantes grâce à PHPExcel.

    Retrouvez cet article ici

    Commentez

    ________________________________________________________

    PHPExcel va nous proposer la génération des formats suivants :

    • Excel 2007
    • Excel 2007 - compatible Excel 2003
    • Excel 5 - via la librairie Spreadsheet_Excel_Writer
    • PDF - via la librairie Fpdf
    • CSV
    • HTML


    Vous trouverez cet Article ici PHPExcel



    Retrouver tous les meilleurs cours et tutoriels pour apprendre PHPl
    Retrouver tous les meilleurs cours et tutoriels pour apprendre Microsoft Office Excel

  2. #2
    Membre expérimenté
    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 : 50
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    SUPER ! merci beaucoup.

    J'ai passé une semaine entière à essayer de faire quelque chose avec writeexcel.

    writeexcel est trop peu documenté, c'est dommage.

    Ce tuto tombe à point.

    Merci encore à toi.

    beegees

  3. #3
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Suite à des MP reçu, je vous confirme qu'il est possible de travailler à partir d'un fichier Excel existant.

    Si vous téléchargez la librairie PHPExcel, les tests 07 et 20, abordent un peu le sujet.

    Je viens de faire un petit essai.

    Je m'y suis pris de la façon suivante, en me basant sur les fichiers de démonstration.

    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
     
    //on inclut la classe nécessaire à la lecture du fichier existant
    include 'PHPExcel/IOFactory.php';
     
     
     
    //on instancie un objet de lecture
    $objReader = PHPExcel_IOFactory::createReader('Excel2007');
     
    //on charge le fichier qu'on veut lire
     
    $objPHPExcel = $objReader->load("05featuredemo.xlsx");
     
    //on modifie ce fichier
     
    $objPHPExcel->getActiveSheet()->setCellValue('A29','MaitrePylos');
     
     
    //on crée un nouveau fichier
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
     
    //on le sauve
    $objWriter->save('coco.xlsx');
    Cet aspect sera surement sujet pour améliorer le tuto existant.

    Merci à vous.

    MaitrePylos

  4. #4
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Citation Envoyé par beegees Voir le message
    SUPER ! merci beaucoup.

    J'ai passé une semaine entière à essayer de faire quelque chose avec writeexcel.

    writeexcel est trop peu documenté, c'est dommage.

    Ce tuto tombe à point.

    Merci encore à toi.

    beegees
    Bonjour,

    La doc de WriteExcel se trouve ici :
    http://cpansearch.perl.org/src/JMCNA...riteExcel.html

  5. #5
    Membre éclairé Avatar de a028762
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 419
    Par défaut Génial Pylos !
    Mais c'est génial, cela !
    Alors que cela fait des années que je jonglais avec COM en entrée
    (pas confiance en sortie)
    et PEAR en sortie
    (beaucoup de fonctions Excel manquent et le format de sortie, .... Excel5)
    Voilà d'un seul coup la solution qui manquait à mes outils,
    remplir de données SQL une trame existante ....
    Merci, oh grand maître Pylos ...

    Dommage que la doc soit si peu fournie, je pense qu'on passe à côté de beaucoup de choses. J'avais testé PHPExcel il y a quelques mois, sans comprendre ce qui s'y cachait

    Bonne semaine à vous tous !

  6. #6
    Invité de passage
    Inscrit en
    Février 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 1
    Par défaut
    Cet outil est super.
    Dommage qu'il ne puisse pas encore gérer les éléments de formulaire comme les checkbox ou les boutons radio.
    Mais ça devrait venir avec le temps.

    En attendant, personne n'aurai une solution par hasard??

  7. #7
    Invité de passage
    Profil pro
    Inscrit en
    Février 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 1
    Par défaut
    Super outils, et super tuto.
    ça fait longtemps que je chercher ce genre lib.
    Est ce que quelqu'un connait quelque chose d'équivalent pour gérer le format word ? powerpoint ?

    merci d'avance

    jno

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Par défaut Magnifique
    Bonjour,
    Cet outil est superbe.
    Mais j'ai juste une demande d'aide car j'ai voulu insérer des caractères accentués dans une cellule, et cela donne un fichier excel corrompu.
    Quelqu'un a t i la solution ?

    Merci beaucoup.

  9. #9
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour,

    As-tu essayé les fonctions utf8_decode() et utf8_encode() ?

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Par défaut Resolu
    Bonjour,
    En effet, avec utf8_encode ça fonctionne sans problème. Merci

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Par défaut Erreur SetCellValueByColumnAndRowExplicit()
    Bonjour à tous, et merci pour cet excellent outil, enfin de quoi pouvoir travailler avec ces fichiers xls !
    Je rencontre un petit prob, car je tente d'exporter des données au format Excel5 en tant que string.
    Pour cela j'ai suivi le tuto proposé ici en codant ceci :
    $sheet->setCellValueByColumnAndRowExplicit($col,$row,$value,PHPExcel_Cell_DataType:: TYPE_STRING);
    je reçois un message à l'exécution m'indiquant que cette méthode n'existe pas.
    Cela ne me permet pas d'obtenir des champs commençant par un zéro (genre numéro de téléphone ou code postal) qui sont tronqués.
    Merci de bien vouloir me guider pour me préciser ce que je n'ai pas dû bien coder ou pas comprendre !
    Cordialement
    Jihel

  12. #12
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Il y a une espace de trop avant la constante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sheet->setCellValueByColumnAndRowExplicit($col,$row,$value,PHPExcel_Cell_DataType::TYPE_STRING);

  13. #13
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2006
    Messages : 11
    Par défaut
    Ca peut aider, en effet, mais je pense que ça vient surtout du fait que la fonction s'appelle "setCellValueExplicitByColumnAndRow"

  14. #14
    Nouveau candidat au Club
    Inscrit en
    Juin 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 2
    Par défaut
    Bonjour,

    Ayant découvert (grâce à vous! ) PHPExcel, je l'utilise depuis quelques jours...

    Tout d'abord j'aimerais savoir est-ce que quelqu'un saurait s'il est possible de mettre des volets grâce à PHPExcel ? (Pour ceux qui ne connaissent pas, c'est des barres horizontales ou verticales qui permettent par exemple dans un tableau, de laisser à l'écran les entêtes du tableau tout en faisant défiler les valeurs) Et si oui comment ? ...

    Et j'aurais aussi une autre petite question... Est-ce que quelqu'un aurait testé de formater des cellules (des dates en l'occurence)?
    Parce que moi (sous le format excel5), je mets des formatages qui sont bien enregistrés mais qui ne sont pas appliqués!!

    Je m'explique.... Je récupère des dates dans une base MySql et je les affiche dans des cellules. Lorsque j'ouvre mon fichier excel créé, et que je fait format de la cellule, je vois bien écrit mon formatage (et il est sélectionné!), mais pourtant dans la cellule ma date est écrite dans le format de la base de donnée.... Quelqu'un aurait-il déjà eu ce problème là??

    Merci d'avance!!

  15. #15
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour,
    Désolé mais je rentre de vacance, pour votre souci de volet(en fait freeze pane), il suffit d'appeler la fonction en lui passant en paramètre la cellule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sheet->freezePane('A2');
    Par contre je ne comprend pas bien votre souci de date.

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 15
    Par défaut Incrementation du nom du fichier
    Bonjour et un grand merci pour tes tutos.

    J'utilise la methode ci-dessous pour ecrire mon fichier, c'est ok mais j'aimerais pouvoir incrementer le nom du fichier pour qu'il n'ecrase pas l'ancien en y ajoutant la date du jour par exemple.

    Toutes mes tentatives d'ajout de variable au nom sont en echec.

    Une solution ?

    Merci d'avance

    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
     
    require_once '../Classes/PHPExcel.php';
    require_once '../Classes/PHPExcel/IOFactory.php';
    include '../Classes/PHPExcel/Writer/Excel5.php';
     
    // Create new PHPExcel object
    $objPHPExcel = new PHPExcel;
     
    *******
    Ecriture des cellules  via mysql
     
    *******
     
    $writer = new PHPExcel_Writer_Excel5($objPHPExcel);
    $records ='./invoice.xls';
    $writer->save($records);

  17. #17
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    ceci fonctionne chez moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $writer = new PHPExcel_Writer_Excel5($objPHPExcel);
    $incremente = '1';
    $records ='./invoice'.$incremente.'.xls';
    $writer->save($records);

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 15
    Par défaut
    Nickel, merci.

    Je n'entourais pas ma variable de 2 points, je n'en mettais qu'un devant.....

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 15
    Par défaut Variables dans une formule
    Bonjour,

    Mon but est d'attribuer à une cellule la valeur d'une autre cellule située sur la même ligne si et seulement si une troisième cellule de la même ligne n'est pas vide.... soit :

    montant_payé=0 si date_paiement=rien sinon montant_payé=montant_facture

    Cette ligne est incrementée dans une boucle, c'est la raison qui m'oblige à trouver une solution pour incrementer la ligne et la cellule dans la formule.

    En excel je fais comme suit : =+SI(G2="";0;$E2)

    Mon code PHP qui ne fonctionne pas (cellule vide) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow("$col", "$lig", '=IF((('$col'-5),'$lig')="";0;E2)');
    Une expertise ?

    Merci d'avance.

  20. #20
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Juste en passant, j'ai pas vérifier, mais j'aurais tendance à tester ceci, suivant ton exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $celulle = ($col -5).$lig;
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $lig, '=+SI('.$celulle.'="";0;$E2)');

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