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 :

[Excel] Enregistrer un tableau PHP en tableau Excel


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    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 [Excel] Enregistrer un tableau PHP en tableau Excel
    Bonjour à tous,

    Avant d'écrire ce message, j'ai pris soin de lire tous les sujets ressemblant au miens, j'ai en effet trouvé beaucoup de choses, mais ça m'a d'avantage perdu.

    J'expose mon problème :

    J'ai un tableau html, remplis par des requêtes sql, via php.

    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
    echo'<table id="tab_total">';
    echo '<tr><td>numero de compte</td><td>numero d\'action</td><td>libelle</td><td>date</td><td>montant HT</td><td>tva</td><td>montant TTC</td><td>facture image</td><td>Supprimer</td></tr>';
     
    for ($i=0; $i <= 9; $i++) {
     
     
     
    $total_prod = true;
     
     
     
    $verif_requete = mysql_query("SELECT * FROM p_facture where Month(PF_date) between ".$mois." and ".$mois3." and PF_numcompte like ('7".$i."%')");
    $tab_verif_requete = mysql_fetch_assoc($verif_requete);
     
    if (!empty($tab_verif_requete)){ // on regarde si la requete contient des resultats si c'est le cas on les affiches, sinon on passe
     
    echo'<tr><th colspan=9>'.$titre[$i].'</th></tr>';
    for ($j=00; $j <= 9; $j++) {
     
     
    $sql_700 = mysql_query("SELECT * FROM p_facture where Month(PF_date) between ".$mois." and ".$mois3." and PF_numcompte like ('7".$i.$j."%')"); 
     
    $z = $j - 1;
     
    while ($rep_700 = mysql_fetch_assoc($sql_700)) // iteration pour afficher les champs
    {
    $num = $rep_700['PF_num'];
    $montant = $rep_700['PF_montant'];
    $libelle = $rep_700['PF_libelle'];
    $date = $rep_700['PF_date'];
    $comptes = $rep_700['PF_numcompte'];
    $tva = $rep_700['PF_tva'];
    $imgfacture = $rep_700['PF_img'];
    $ttc = $montant * (1+$tva/100) ;
     
    echo '<tr><td>'.$comptes.'</td><td>'.$num.'</td><td>'.$libelle.'</td><td>'.$date.'</td><td class="montant">'.$montant.'€</td><td>'.$tva.'%</td><td class="montant">'.$ttc.'€</td>';
    if (!empty ($imgfacture)) // si il n'y a pas de facture on affiche rien .
    {
    echo ' <td><a href="'.$imgfacture.'"><img src="'.$imgfacture.'" alt="'.$libelle.'" title="'.$libelle.'" width=30px height=40px border=0></a>
    </td></tr>';
     
    }
    else{
    echo '<td>sans facture</td>';
    }
    echo '<td><a href="?btm=total_prod&suppr='.$num.'">IMAGE SUPPRIMER</a></td></tr>';
    $total_ttc += $ttc;
    $total_tout += $montant;
    }
    }
     
    $sql_total_prods= ("select sum(PF_montant) as total from p_facture where Month(PF_date) IN (".$mois.", ".$mois3.") and PF_numcompte between 7".$i."0 and 7".$i."9 or PF_numcompte between 7".$i."00 and 7".$i."99");
     
    $requete_total_prods = @mysql_query($sql_total_prods) or die($sql_total_prods."<br>".mysql_error()) ;//on récupère le résultat
    $tab_total_prods = mysql_fetch_assoc($requete_total_prods); //$tab_ca est un tableau
    $total_prods[$i] = $tab_total_prods['total'];
     
    echo "<tr id='zone_calcul'><td>total 7".$i."</td><td colspan=4>".$total_prods[$i]."€</td><td colspan=3></td></tr>";
     
    }
    }
     
    echo "<tr id='zone_calcul'><td>total des montants</td><td colspan=4>".$total_tout."€</td><td></td><td>".$total_ttc."€</td><td></td></tr>";
    echo'</table>';
    J'aimerai donner la possibilité à l'utilisateur d'enregistrer ce tableau pour Excel ou son équivalent Open Office dans un premier temps (après pourquoi pas voir au format pdf).

    J'ai bien lu et un peu compris les tuto de Maitre Pylos, je vous pose maintenant la question, laquelle des ses méthodes est-elle la plus adapter à mes besoins ?
    • PHPExcel

    • Spreadsheet_Excel_Writer


    J'ai aussi vue une méthode qui consister à mettre simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Content-type: application/vnd.ms-excel");
    Cependant, elle enregistre en ".php"

    Si vous avez besoin d'avantages d'informations, n'hésitez pas à me questionner.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Salut,

    ça dépend de tes besoins, PHPExcel travaille avec de l'openXML donc il est compatible avec Excel 2007, pas sur qu'il puisse sortir du XLS pour les versions précédentes d'Excel.

    Spreadsheet_Excel_Writer sera réservé au version antérieur d'Excel, avant 2007.

    header("Content-type: application/vnd.ms-excel"); est intéressant car il demande peu d'effort mais il équivaut a un CSV (pas de mise en page...).
    De plus il faut que les utilisateurs aient Excel sur leur machine.

  3. #3
    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
    et pour ce qui est du tableau open office ?

    Les deux versions sont elles compatible ? :S

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Un fichier OpenOffice ne peut pas etre lu sur du Microsoft Excel.
    En revanche un fichier Excel peut etre lu sur du Open Office avec une marge d'erreur. La compatibilité ne peut etre garantie a 100% sauf peut-etre pour
    l'openXml cela dit si ton fichier Excel est simple il ne devrait pas poser probleme.

  5. #5
    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
    Merci beaucoup, j'ai utilisé PHPExcel, et ça fonctionne niquel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Enregistrer un tableau php en Fichier SYLK compatible Excel
    Par Atchoum dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 0
    Dernier message: 15/02/2011, 19h37
  2. un macro qui enregistre un tableau excel sur un fichier word
    Par maherom dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 07/08/2009, 01h33
  3. Enregistrer un tableau de caractéres
    Par pacsems dans le forum Delphi
    Réponses: 14
    Dernier message: 03/02/2007, 21h41
  4. Enregistrer un tableau d'objet
    Par MicroPuce dans le forum Hibernate
    Réponses: 2
    Dernier message: 12/11/2006, 09h54
  5. enregistrer un tableau dans un fichier texte
    Par petitours dans le forum C++Builder
    Réponses: 3
    Dernier message: 06/11/2006, 14h10

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