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] Export php -> excel


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut [Excel] Export php -> excel
    Bonjour,

    A l'aide du tuto trouvé à cette page http://stephaneey.developpez.com/tutoriel/php/phpexcel/ , je tente de créer un fichier excel comportant un graphique.
    Ce dernier marche, mais ne fait que s'enregistrer sur le disque dur. Est-il possible que lorsque l'on clique sur le lien pour exécuter le script, cela lance directement le fichier au lieu de l'enregistrer ?

    Ensuite, j'éprouve quelques difficultés à "convertir" du code VBA (trouvé à l'aide des macros sous excel) en php !

    Par exemple, j'aurai besoin de redéfinir les valeurs de l'axe des abscisses.
    En VBA cela donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveChart.SeriesCollection(1).XValues = _
            "='Graphique effectifs par âge'!R1C1:R5C1"
    sachant que j'ai sélectionné les cases de la colonne A ...


    Merci de votre aide future!

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Je ne connais pas bien COM, mais voici une méthode qui fonctionne à tous les coups. Utilise les fonctions de gestion du flux de sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ob_start(); //au début
    ...
    $output = ob_get_clean(); //à la fin
    Puis tu envoies les headers pour fichier Excel, la taille du fichier, bref tout ce qu'il faut pour envoyer le fichier, et tu termines par :

  3. #3
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut
    Salut,

    Tout d'abord merci pour ta réponse ! J'ai trouvé quelquechose de mon côté pour l'ouverture du fichier à l'aide de différents headers (bien que je n'ai fait que des copier/coller sans trouver de sites expliquant chacune de ses fonctionnalités).

    Par contre, je n'arrive pas à virer le message demandant d'enregistrer qui s'ajoute à celui pour l'ouverture (généré par les headers). Même en enlevant la fonction $book->saveas(FILENAME);

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Est-ce que tu peux montrer un bout de code, si tu veux que je t'aide ?

  5. #5
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut
    Bonjour,

    Je te donne le code de mon fichier d'exportation

    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
    <?php
     
    session_start();
     
    /*Connexion à la base de données*/
    require_once('../fonction_connexion.php');
    connexion();
     
    require_once ('../ed/fonction_ed.php');
     
    define("FILENAME","test.xls");
    $chemin = 'C:\Documents and Settings\thomeres\Mes documents\test.xls';
     
    header('Content-Type: application/msexcel');
    header("Content-Disposition: attachment; filename=\"test.xls\"");
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    readfile($chemin);
     
    $variable=liste_age("age","nb_age");
    $age=liste_age("age","liste_age");
     
    //Si le fichier existe, le supprimer
    //if(file_exists(FILENAME)){
    //	unlink(FILENAME);
    //}
    $excel=new COM("Excel.application");//Instanciation de l'objet COM
    $excel->sheetsinnewworkbook=1;//Une seule feuille dans le document
    $excel->Workbooks->Add();//Ajout d'un classeur
    $book=$excel->Workbooks(1);//$book contient le classeur actif
    $sheet=$book->Worksheets(1);//$sheet contient la feuille active
    $sheet->Name="Graphique effectifs par âge";//Attribution d'un nom à la feuille
    $cell=$sheet->Range('A1');
    $cell->value="Âge";
    $cell=$sheet->Range('B1');
    $cell->value="Effectifs";
    $i=2;
    while($i <= count($variable)+1){//Parcours du résultat de la requête
    	$cell=$sheet->Range('A'.$i);
    	$cell->value=$age[$i-2];
    	$cell=$sheet->Range('B'.$i);
    	$cell->value=$variable[$i-2];
    	$i++;
    }
     
    $i--;
    $selection = $sheet->range("B2:B$i");//Sélection des cellules qui seront la source du graphique
    $graph = $sheet->chartobjects->add(150, 10, 300, 250); //Ajout du graphique
    $graphique = $graph->chart;//$graphique contient le graphique actif
    $graphique->type=3;//le graphique est de type "Histogramme"
    //$graphique->activate;//Activation du graphique
    $graphique->setsourcedata($selection);//Définition de la source du graphique
    //$graphique->ApplyDataLabels->type=5;//Afficher les valeurs
    $graphique->HasTitle=true;
    $graphique->ChartTitle->Text="Effectifs par âge";//Attribution d'un titre
    //$book->saveas(FILENAME);//Enregistrement du document
    unset($sheet);//Libération de $sheet
    unset($book);//Libération de $book
    $excel->Workbooks->Close();//Fermeture du classeur
    $excel->Quit();//On quitte Excel
    unset($excel);//Libération de l'objet $excel
    ?>

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    La ligne que tu cherches à supprimer est la suivante :
    Pour info, voici un script permettant d'envoyer un document avec les bons headers :
    http://php.developpez.com/faq/index...._forcedownload

  7. #7
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut
    Merci pour ta réponse, mais le problème persiste.

    J'ai un premier message (que je souhaiterai supprimer) me demandant ceci :
    Voulez-vous enregistrer les modifications apportées à 'Classeur1'?
    Et un second m'invitant soit à ouvrir le fichier, soit à l'enregistrer.

    Je pensais que cela tournait autour de la fonction saveas, mais comme je l'ai déjà mise en commentaire et que cela ne change rien, je ne sais pas trop où m'orienter.

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Comme je te l'ai dit, je ne connais pas COM :/

  9. #9
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut
    lol en tout cas merci ^^

Discussions similaires

  1. Réponses: 10
    Dernier message: 09/08/2016, 18h56
  2. export PHP/HTML vers EXCEL
    Par fthem dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 13/03/2013, 19h31
  3. [ODBC] export php vers Excel probleme de colonne
    Par nawak.seb dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/02/2009, 12h06
  4. [SQL] exportation php vers csv
    Par yveslens dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 10/02/2007, 07h06
  5. [phpMyAdmin] [phpMyAdmin v2.9.0.2] quand j'exporte j'ai export.php non db.sql !
    Par cassy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 13/10/2006, 12h09

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