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. #61
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Bonjour,
    merci pour cet agréable outil, je voudrais savoir comment réussir à se connecter à une base de données pour exécuter des requêtes SQL, pour pouvoir insérer le résultat de la requête dans le fichier excel??

  2. #62
    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
    Puis-je avoir un début de test pour pouvoir vous aider.

    Une petite requête sql histoire de pouvoir étayer mes propos afin de vous faciliter la compréhension

  3. #63
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    tout d'abord j'ouvre une page excel(repport.xls) dans laquelle je veux rajouter des informations venant d'une requête SQL.

    la requête est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $query = SELECT nom, numero, datedenaissance from fournisseur where numero='".safestring($num)."';
    $res = executeRequest($query);
    $row = mysql_fetch_array($res);
    je veux l'insérer dans('J5'), j'ai essayé ca mais ca marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $objReader = PHPExcel_IOFactory::createReader('Excel5');
     
    	$objPHPExcel = $objReader->load("repport.xls");
     
    	$objPHPExcel->getActiveSheet()->setCellValue('J5', ".$row['numero']."); 
    	$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');	 
    	$objWriter->save('repport2.xls');
     
    	 header('Content-type: application/vnd.ms-excel');
    	 header('Content-Disposition:inline;filename= repport2.xls ');
    	$objWriter->save('php://output');

  4. #64
    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
    Il suffit alors de réaliser une boucle au départ de votre requête SQL, et d'identifier vos cellule excel par leurs emplacement et non par leur noms


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //A1 se trouve en position 0,0
    //j5 se trouve en position 9,4 
    $i=4;
    while($row = mysql_fetch_array($res)){
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(9,$i, ".$row['numero'].");
    //on incrémente pour le passage à la cellule suivante
    $i++;
    }
    dite moi si cela vous aide ?

  5. #65
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    j'ai cette erreur:
    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' on line 25
    ligne 25 c'est:
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(9,$i, ".$row['projectcode'].");

  6. #66
    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
    essayez ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(9,$i, $row['projectcode']);

  7. #67
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    ca m'affiche une page avec des caractères bizarre:

    ÐÏࡱá;þÿ þÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ »
    ÌÑB°=¼%r8X"1ÈArial1*Arial1*¼Arial1*Arial1x¼Arial1T
    ¼Arialàõÿ Ààõÿ Ààõÿ Ààõÿ Ààõÿ Ààõÿ Ààõÿ Ààõÿ Ààõÿ Ààõÿ Ààõÿ Ààõÿ Ààõÿ Ààõÿ Ààõÿ Àà Àà1 Ìà1 Äà#Èà Èà1 ìà àà1üà1üà1ü à1ü à1üà1üà1üà1üà1ü à1ü à1ü à1ü à1üà1üà1üà1üà1#Ìà Àà1 Ìà1 Äà1 Ìà!Èà!À“€ÿ’â8ÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€€€ÀÀÀ€€€™™ÿ™3fÿÿÌÌÿÿffÿ€€fÌÌÌÿ€ÿÿÿÿÿÿ€€€€€ÿÌÿÌÿÿÌÿÌÿÿ™™Ìÿÿ™ÌÌ™ÿÿÌ™3fÿ3ÌÌ™ÌÿÌÿ™ÿfff™–––3f3™f333™3™3f33™333…+
     ReportÁÁgæ®üÍ:PROJECT NAME / NUMBER::*ADDENDUM / MODIFICATION OF NAME:SUPPLIER NAME

  8. #68
    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
    reprenons depuis le début , est-ce que ceci fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    include 'PHPExcel.php';
    include 'PHPExcel/Writer/Excel5.php';
     
    $workbook = new PHPExcel;
     
    $sheet = $workbook->getActiveSheet();
    $sheet->setCellValue('A1','MaitrePylos');
     
    $writer = new PHPExcel_Writer_Excel5($workbook);
     
    $writer->save('php://output');

  9. #69
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    je viens d'essayer votre code mais ca ne marche pas ca m'affiche des caractères bizarre:
    ÐÏࡱá;þÿ  þÿÿÿþÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ » ÌÑB°=¼%r8X"1ÜCalibriàõÿ À àõÿ À àõÿ À àõÿ À àõÿ À àõÿ À àõÿ À àõÿ À àõÿ À àõÿ À àõÿ À àõÿ À àõÿ À àõÿ À àõÿ À à À “€ÿ’â8ÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€€€ÀÀÀ€€€™™ÿ™3fÿÿÌÌÿÿffÿ€€fÌÌÌÿ€ÿÿÿÿÿÿ€€€€€ÿÌÿÌÿÿÌÿÌÿÿ™™Ìÿÿ™ÌÌ™ÿÿÌ™3fÿ3ÌÌ™ÌÿÌÿ™ÿfff™–––

  10. #70
    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
    tenter d'enregistrer le ficheir plutôt que de l'ouvrir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $writer->save('test.xls');

  11. #71
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    aprés l'enregisrement oui ca marche mais moi je dois l'afficher directement sans avoir a l'enregistrer
    une autre question: quand je mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0,  $j, $numéro);
    ca me rempli juste une ligne mais dans ma base j'ai plusieurs ligne, comment pourrais je faire pour afficher tous?

  12. #72
    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
    cfr plus haut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    //A1 se trouve en position 0,0
    //j5 se trouve en position 9,4 
    $i=4;
    while($row = mysql_fetch_array($res)){
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(9,$i, ".$row['numero'].");
    //on incrémente pour le passage à la cellule suivante
    $i++;
    }

  13. #73
    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
    Cela sous entend que tu as régler tes problèmes de caractères ?


    je vois maintenant que tu utilises la variable $sheet

    as-tu bien fait ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sheet = $objPHPExcel->getActiveSheet();

  14. #74
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Merci beaucoup pour votre aide.
    Non Non je les ai toujours pas réglé, j'étais juste entrain d'essayé pour les couleurs. après enregistrement tout s'affiche très bien mais le problème c'est qu'on me demande d'afficher le fichier directement sans avoir a l'enregistrer et je ne sais vraiment pas comment faire

  15. #75
    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
    êtes vous sûr qu'il n'y a pas de caractères blanc qui passe au moment de la génération de votre script ?

  16. #76
    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
    Il me semble que votre contient une ou deux erreurs de conception, mais je vais m'en tenir au fichier Excel.

    Si vous faites ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sheet = $objPHPExcel->getActiveSheet();
    Alors vous pouvez vous simplifiez la vie et écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $sheet->setCellValueByColumnAndRow(9,$i, $rowHead['projectcode']); 
     //au lieu de
     
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(9,$i, $rowHead['projectcode']);
    dans votre code la balise
    est quelque lignes plus bas, est-ce aussi le cas dans votre fichier? si oui, supprimer ces espaces


    plus bas dans le code, vous utilisez des balises HTML
    a remplacer par

    et pour que le passage à la ligne ce fasse , il faut activer dans la celulle le mode 'wrap', voir mon tuto.

  17. #77
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Malheureusement ca ne change rien du tout.

  18. #78
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 73
    Points : 60
    Points
    60
    Par défaut
    J'ai exactement le même problème,
    à l'ouverture du xls sur navigateur => problème de caractères
    en sauvegardant => ca marche niquel.

    edit : il semblerait que l'erreur soit le fait qu'il y est du html avant.

  19. #79
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Salut Te-san alors tu as pu régler ton problème si oui, commet as tu fait car j'ai toujours le même problème moi.

  20. #80
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 73
    Points : 60
    Points
    60
    Par défaut
    Mon problème était qu'il y avait du code html avant le code php.
    J'ai simplement fait un lien qui ne renvoyait aucun html, (simplement la page contenant le code php).

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