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 Excel dans un template


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 68
    Par défaut [Excel] Export Excel dans un template
    Bonjour,

    J'ai un problème que je n'arrive pas à solutionner.
    En fait, j'aimerais pouvoir exporter un tableau de données de mon application et l'insérer dans un template Excel qui se trouve sur le serveur, pour que l'utilisateur qui a demandé l'export, puisse le sauvegarder.

    J'ai besoin des templates, ils sont composés d'une partie "table de donnée" (que j'aimerais remplir) et d'un graphique (qui se construra en fonction des dites données).

    J'ai réussi à faire un nouveau fichier Excel vide et à remplir les 2 première colonnes comme ci-dessous, mais impossible de loader un template et le remplir.

    Avec cet exemple:
    - Un nouveau fichier Excel est créé
    - La colonne A est remplie avec le champ NAME
    - La colonne B est remplie avec le champ VALUE
    - Et le fichier est proposé au téléchargement à l'utilisateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    header("Content-Type: application/vnd.ms-excel");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("content-disposition: attachment;filename=template1.xls");
    //la dernière lignes header ne devrait pas créer un nouveau template.xls, mais ouvrir l'existant...
     
    $i = 0;
    while($data[$i]['name'] <> null){    		    		
      echo $data[$i]['name']."\t".$data[$i]['value']."\r\n";
      $i++;
    }
    Ma question est:
    Comment modifier ou remplacer les 4 lignes HEADER pour ouvrir un fichier Excel existant et y appliquer la même insertion de données?

    Est-ce que quelqu'un à une idée pour me faire avancer?
    Merci d'avance pour vos suggestions.
    Seurjer

  2. #2
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Bonjour,

    Tu as deux possiblités pour cela :

    - soit tu génères un fchier csv (pris en charge par Excel)
    - soit tu génères des fichiers xls, xlsx (voir l'article Introduction à PHPExcel)

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 68
    Par défaut
    Hello,

    Merci pour tes suggestions, mais:

    1. Comment je pourrais merger un fichier csv contenant mon tableau de données et mon template qui contient mon graph vide?

    2. Dans la deuxième proposition, tu parles de PHPExcel (une librairie de plus!)
    Est-ce qu'il n'y a pas une solution dans l'esprit ci-dessous?

    PS: je me retrouve avec une page blanche et rien ne se passe dans mon fichier template2.xls...
    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
     
    $FILENAME="./excel_templates/template2.xls"; 
    $excel=new COM("Excel.application"); 
    $excel->Workbooks->Open($FILENAME);
    $excel->Visible=1; 
    $book=$excel->Workbooks(1); 
    $sheet=$book->Worksheets(1);
     
    $i = 0;
    while($data[$i]['name'] <> null){    		    		
     
    	$selcell = $sheet->cells($i,1); 
    	$selcell->activate; 
    	$selcell->value=$data[$i]['name']; 
    	$i++;
    }
    $book->Save(); 
    unset($sheet); 
    unset($book); 
    $excel->Workbooks->Close(); 
    $excel->Quit(); 
    unset($excel);
    Merci,
    Seurjer

  4. #4
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    ok, tu n'avais pas dit que tu utiliser la classe COM. Mais c'est quoi le while qui vient juste après ?

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 68
    Par défaut
    C'est pour parcourir mon tableau $data et insérer ligne par ligne les données dans ma feuille Excel.

    C'est pas correct?

  6. #6
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Citation Envoyé par seurjer Voir le message
    C'est pour parcourir mon tableau $data et insérer ligne par ligne les données dans ma feuille Excel.

    C'est pas correct?
    Tu parles de ceci ? c'est pas correct en effet...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $i = 0;
    while($data[$i]['name'] <> null){    		    		
      echo $data[$i]['name']."\t".$data[$i]['value']."\r\n";
      $i++;
    }

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

Discussions similaires

  1. [AIX] Exporter résultats dans excel
    Par Crevette130983 dans le forum AIX
    Réponses: 4
    Dernier message: 10/04/2009, 16h50
  2. Nommer la feuille du classeur Excel dans lequel on exporte une requête
    Par Thierry'' dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 20/09/2006, 08h41
  3. Réponses: 4
    Dernier message: 30/08/2006, 20h33
  4. Exporter résultats dans fichier excel [forms 6i]
    Par OUALASS dans le forum Forms
    Réponses: 4
    Dernier message: 30/05/2006, 19h38
  5. Exporter données dans un fichier excel
    Par Kasanova75 dans le forum Oracle
    Réponses: 3
    Dernier message: 08/03/2006, 10h09

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