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. #1
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    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 497
    Points : 12 600
    Points
    12 600
    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 é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 : 49
    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
    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 497
    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 497
    Points : 12 600
    Points
    12 600
    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
    Membre confirmé 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
    Points : 537
    Points
    537
    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 !

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 1
    Points : 1
    Points
    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??

  6. #6
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    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

  7. #7
    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
    Points : 4
    Points
    4
    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.

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    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 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Bonjour,

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

  9. #9
    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
    Points : 4
    Points
    4
    Par défaut Resolu
    Bonjour,
    En effet, avec utf8_encode ça fonctionne sans problème. Merci

  10. #10
    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
    Points : 5 673
    Points
    5 673
    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

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 4
    Points
    4
    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 497
    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 497
    Points : 12 600
    Points
    12 600
    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 à l'essai
    Inscrit en
    Octobre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2006
    Messages : 11
    Points : 10
    Points
    10
    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
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 2
    Points : 2
    Points
    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 497
    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 497
    Points : 12 600
    Points
    12 600
    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
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    bonjour,

    dsl de répondre si tard mais comme j'étais partie sur autre chose, je n'ai plus pensé à mon post....

    en fait, mon problème était sur le format de la date, j'avais beau demander à phpexcel de me mettre la date sous le format 'mm-aa', il ne voulait point!! Il me laissait la date au format de la base à savoir : 'aaaa-mm-jj' malgré ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $style->getNumberFormat()->applyFromArray(array('code' => PHPExcel_Style_NumberFormat::FORMAT_DATE_MYMINUS));
    enfin bref! j'ai quand même trouvé une solution en cherchant par-ci par-là et j'ai trouvé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $time = gmmktime(0,0,0,substr($date,5,2),substr($date,8,2),substr($date,0,4));
    $sheet->getCell('D'.$i)->setValue(PHPExcel_Shared_Date::PHPToExcel($time));
    où $date est la date que j'ai récupérée dans ma base...
    voilà! au cas où quelqu'un aurait le même soucis, c'est là!

    PS : Merci pour l'info sur le volet, j'vais pouvoir le rajouter à mes fichiers!!
    C'est vraiment complet phpexcel !! j'pensais pas que ce serait pas possible et finalement ça l'est!

  17. #17
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Juillet 2008
    Messages : 3
    Points : 4
    Points
    4
    Par défaut N'est pas maître qui veut!!!
    Merci MaitrePylos tu me sauves la vie,
    Ce tuto m'a permis de faire ressuciter un vieux projet

    Merci...!!!

  18. #18
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    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 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Mais avec grand plaisir

  19. #19
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 67
    Points : 48
    Points
    48
    Par défaut
    Bonjour je me permet de relancer ce sujet , a moi aussi PHPExel me sauve la vie , seulement j'ai un petit souci: quand j'extrait mes données il fait une sauvegarde d'un bon fichier dans le répertoire que je veux ,mais qd je veux donner la possibilité a l'utilisateur de telecharger en presisant au header un

    'Content-disposition', 'attachment; filename=monFichier.xls'

    il me le télécharge mais le fichier obtenu n'est pas bon ;lorsque je veux l'ouvrir il me donne ce message :

    le format du fichier que vous tentez d'ouvrir <<monFichier.xls>> est différent de celuit specifié par l'extension du fichier

    Quelqu'un a t il une idée de ce que ça peut bien être ?

    Merci d'avance

  20. #20
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    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 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Si vous avez suivi mon tutoriel, on crée une nouvelles classe avec deux méthodes.

    Une méthode enregistre() qui effectivement va enregistrer le fichier et une méthode affiche() qui lui va donner la possibilité d'ouvrir le fichier à travers le navigateur.

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, 14h40
  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, 18h28
  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, 15h39
  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, 10h29
  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, 11h27

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