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] Exporter un tableau PHP vers CSV ou XLS


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Points : 73
    Points
    73
    Par défaut [Excel] Exporter un tableau PHP vers CSV ou XLS
    bonjour,
    j'ai un petit problème que je ne sais pas de tout comment s'est prendre avec.
    dans mon projet de stage on me demande d'ajouter un bouton dans ma page PHP pour pouvoir exporter le tabeau afficher en forme exploitable par excel
    je lance la requête je recupère mes données j'affiche bien mon tableau mais je ne sais pas comment faire pour l'exporter à partir de lapage php
    je l'ai vu quelque part mais je ne sais pas faire
    SVP aidez moi.
    merci d'avance

  2. #2
    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
    Salut,

    Je m'étais fais une petite classe pour cette question récurrente.

    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
     
    <?php
    class FichierExcel {
     
    private 
    	$csv = Null;
    	/**
    	 * Cette ligne permet de créer les colonnes du fichers Excel
    	 * Cette fonction est totalement faculative, on peut faire la même chose avec la
    	 * fonction insertion, c'est juste une clarté pour moi
    	 */
    	function Colonne($file) {
     
    		$this->csv.=$file."\n";
    		return $this->csv;
     
    	}
     
    	/**
    	 * Insertion des lignes dans le fichiers Excel, il faut introduire les données sous formes de chaines
    	 * de caractère.
    	 * Attention a séparer avec une virgule.
    	 */
    	function Insertion($file){
     
    		$this->csv.=$file."\n";
    		return $this->csv;
    	}
     
    	/**
    	 * fonction de sortie du fichier avec un nom spécifique.
    	 *
    	 */
    	function output($NomFichier){
     
    		header("Content-type: application/vnd.ms-excel");
    		header("Content-disposition: attachment; filename=$NomFichier.csv");
    		print $this->csv;
    		exit;
     
    	}
    }
     
    ?>
    Puis tu l'instancies avec tes données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $fichier = new FichierExcel();
    $fichier->Colonne("Col1;Col2;Col3");
    $fichier->Insertion("COUCOU;SALUT;BONJOUR");//ici on peut faire une boucle si nécessaire.
    $fichier->output('NomFichier');

    Perso, je sépare par des points-Virgule, reconnu tout de suite par Ooo.

    Pour Excel , il faut sélectionner la colonne A, ensuite Données->convertir

    Voila.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Points : 73
    Points
    73
    Par défaut
    execusez moi est ce que vous pouvez me donner un exemple d'utilisation SVP
    car je suis débutant et j ene comprend vraiment tout
    merci de votre aide

  4. #4
    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
    Copiez le premier code dans un fichier et nommé le FichierExcel.php

    Une fois ceci fait ouvrez un nouveau fichier test.php et taper le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
     
    include('FichierExcel.php');
     
    $fichier = new FichierExcel();
    $fichier->Colonne("Col1;Col2;Col3");
    $fichier->Insertion("COUCOU;SALUT;BONJOUR");//ici on peut faire une boucle si nécessaire.
    $fichier->output('NomFichier');
    Appeler test.php et normalement un tableur devrais s'ouvrir

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Points : 73
    Points
    73
    Par défaut
    merci pour vos explications
    mais j'ai eu l'erreur svt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in c:\program files\easyphp1-8\www\FichierExcel.php on line 4
    et moi je cherche à avoir un tableau déja présent dans ma page web en forme exploitable par excel
    je m'excuse si je suis lourd
    mais je ne sais pas sincerment comment faire et je dois le faire aidez moi SVP
    merci

  6. #6
    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
    Voir la ligne 4 du fichier

    FichierExcel.php on line 4


    Ton tableau est visible sur ta page web, certe, mais tu veux le modifier à la volée?

    Où donner la possibilité de la modifier sur Excel et de se la garder sur son pc?

  7. #7
    Membre actif Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Points : 205
    Points
    205
    Par défaut
    Bonjour ! J'ai testé chez moi, car je cherche à produire un fichier excel à partir d'une base de données.

    J'ai cependant eu la meme erreur que mariafan, j'ai donc changé ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class FichierExcel {	
    	private $csv = Null;
    //par
    class FichierExcel {	
    	var $csv = Null;
    J'ai cependant 2 problèmes:
    - POurquoi est-ce que j'obtiens une page blanche sous IE 6.0, et qu'excel ne s'ouvre pas ?
    - Pourquoi sous excel 97 (je n'ai pas les autres), toutes les colonnes d'une ligne se trouvent dans la premiere cellule de la ligne en question ?

    Merci

  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
    Citation Envoyé par bigltnt
    J'ai cependant eu la meme erreur que mariafan, j'ai donc changé ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class FichierExcel {	
    	private $csv = Null;
    //par
    class FichierExcel {	
    	var $csv = Null;
    J'oublie souvent que je suis en php5
    Citation Envoyé par bigltnt
    J'ai cependant 2 problèmes:
    - POurquoi est-ce que j'obtiens une page blanche sous IE 6.0, et qu'excel ne s'ouvre pas ?
    - Pourquoi sous excel 97 (je n'ai pas les autres), toutes les colonnes d'une ligne se trouvent dans la premiere cellule de la ligne en question ?

    Merci
    Pour Ie6 : je sais pas chez moi ça marche, voir peut être du côté de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Content-type: application/vnd.ms-excel");
    Pour ce qui est de 1 colonne, c'est à cause de la séparation, j'utilise le pont virgule qui est automatiquement reconnu par OpenOffice.

    Pour Excel il faut sélectionner la colone A->Données->convertir->choisir point-virgule

  9. #9
    Membre actif Avatar de Nicomart
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 205
    Points : 210
    Points
    210
    Par défaut
    Sinon, tu peux essayer la solution suivante :

    dans ta page, tu mets un lien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="dl.php">T&eacute;l&eacute;charger</a>
    Dans le même répertoire, tu crées une page que tu appelles dl.php et qui contient le code suivant (et rien d'autre) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <? 
    header("Content-disposition: attachment; filename=monfichier.csv"); 
    header("Content-Type: application/force-download"); 
    header("Content-Transfer-Encoding: text/plain\n"); 
    header("Content-Length: ".filesize('monfichier.csv')); 
    header("Pragma: no-cache"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); 
    header("Expires: 0"); 
    readfile('monfichier.csv');
    ?>
    En remplaçant monfichier.csv par le nom de ton fichier, toujours dans le même répertoire. Cela suppose bien sûr que le fichier existe, mais ça tu peux le créer assez simplement. Je suppose que le tableau est créé à partir des champs d'une bd, donc avec les instructions fopen, fwrite, fclose, ça se fait...

    hope it helps

  10. #10
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    sinon y a tout simplement le package spreadsheet_excel_writer de PEAR qui fait ça très bien

    et si tu veux pas t'embêter à installer PEAR, en standalone y a php_writeexcel qui est très bien

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Points : 73
    Points
    73
    Par défaut
    oui mai s comment ça marche est ce que c'est un outils ou c quoi exactement
    moi j'ai besoin d'automatisé cette tache i.e lorsque je suis dans une page avec un lien ou un bouton je génére le fichier exploitable par excel
    merci de votre aide

  12. #12
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    ben... c'est des librairies donc ça met à ta disposition des objets, des méthodes...

    comment les utiliser ben suivant quelle librairie tu veux utiliser tu vas sur le site off et tu regardes la doc, comme tout le monde

    et comment l'intégrer au site ben ton lien ou ton bouton tu les fais pointer vers une page php
    et dans cette page, tu mets juste le code qui va te générer le fichier Excel (envoi de headers et écriture des données)

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Nicomart
    Sinon, tu peux essayer la solution suivante :

    dans ta page, tu mets un lien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="dl.php">T&eacute;l&eacute;charger</a>
    Dans le même répertoire, tu crées une page que tu appelles dl.php et qui contient le code suivant (et rien d'autre) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <? 
    header("Content-disposition: attachment; filename=monfichier.csv"); 
    header("Content-Type: application/force-download"); 
    header("Content-Transfer-Encoding: text/plain\n"); 
    header("Content-Length: ".filesize('monfichier.csv')); 
    header("Pragma: no-cache"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); 
    header("Expires: 0"); 
    readfile('monfichier.csv');
    ?>
    En remplaçant monfichier.csv par le nom de ton fichier, toujours dans le même répertoire. Cela suppose bien sûr que le fichier existe, mais ça tu peux le créer assez simplement. Je suppose que le tableau est créé à partir des champs d'une bd, donc avec les instructions fopen, fwrite, fclose, ça se fait...

    hope it helps
    est ce que je peux avoir plus d'explication concernant les si je dois les ajouter dans mon code distes moi svp ou exactement et commen tles utilisé SVP
    Merci d'avance (je ne sais pas trop comment les utilisé car je suis débuttant en php)

    merci

  14. #14
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    tjrs chercher avant de demander

    fopen
    fwrite
    fclose

  15. #15
    Membre actif Avatar de Nicomart
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 205
    Points : 210
    Points
    210
    Par défaut
    le fopen va te permettre d'ouvrir ton fichier, éventuellement de le créer avec plus ou moins d'options (cf. la doc de Dia_fr). Tu l'utilises au début de ton script.

    Ensuite, pour chaque champ que tu veux entrer dans ton fichier, tu fais un fwrite avec ce champ en paramètre, suivi du caractère de fin de ligne (\n).

    Tu finis par fermer ton fichier en le sauvegardant avec fclose.

    Ce sont les trois opérateurs basiques de gestion de fichier en php.

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Points : 7
    Points
    7
    Par défaut pb avec php 4.4.9
    Bonjour,
    je viens relancer la discussion

    j'ai utilisé ce script génial ,
    en local avec wampserver ( php 5.25) çà marche nickel

    chez mon hébergeur (1&1 php 4.4.9) pas moyen ,
    après avoir corrigé la déclaration de variable dans la class, comme indiqué
    je me retrouve avec le contenu du fichier csv généré qui s'affiche dans la fenêtre qui lance le script.

    quelqu'un a-t-il une idée ?

    merci

    Ulysse

  17. #17
    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
    on peut voir le code ?

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 18
    Points : 28
    Points
    28
    Par défaut
    Bonjour, je vais dépoussiérer ce sujet mais juste pour dire que ta classe est très bien pensé, et qu'elle fonctionne parfaitement.
    Pour ma part ça donne ça en réadaptant :
    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
    <?php
    /**
     * Génère fichier excel
     *
     */
     
    class SC_Excel
    {
     
    	private $csv = array();
     
    	/**
    	 * Permet d'insérer une colone (même chose qu'une ligne, mais fort pratique pour le compréhension)
    	 *
    	 * @param string $file
    	 * @return array
    	 */
    	function colonne($file)
    	{
    		$this->csv[] = $file;
    		return $this->csv;
    	}
     
    	/**
    	 * Permet d'insérer des lignes.
    	 *
    	 * @param string $file
    	 * @return array 
    	 */
    	function insertion($file)
    	{
    		$this->csv[] = $file;
    		return $this->csv;
    	}
     
    	/**
    	 * Permet la création du fichier
    	 *
    	 * @param string $NomFichier Correspond au nom du fichier
    	 */
    	function output($NomFichier)
    	{
    		header("Content-type: application/vnd.ms-excel");
    		header("Content-Disposition: attachment;filename=$name");
    		header("Content-Transfer-Encoding: binary");
    		header('Pragma: no-cache');
    		header('Expires: 0');
    		header("Content-disposition: attachment; filename=$NomFichier.csv");
    		$content = mb_convert_encoding(implode("\n", $this->csv), "Windows-1252", "UTF-8");
    		echo $content;
    		exit;
    	}
    }
     
    ?>

  19. #19
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pas de implode pour du CSV mais fputcsv

    EDIT : pas aussi confondre CSV et XSL, dans Excel on ouvre pas un CSV mais on importe un CSV

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 18
    Points : 28
    Points
    28
    Par défaut
    Salut j'ai du mal à saisir ta remarque, je n'écris pas directement dans un fichier là ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] Export de PHP vers CSV et import dans Excel
    Par MelkInarian dans le forum Excel
    Réponses: 7
    Dernier message: 08/03/2018, 10h21
  2. [MySQL] exporter un tableau php vers MySQL en prenant en compte les NULL
    Par pierricktpt dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/03/2012, 08h51
  3. [SQL] exportation php vers csv
    Par yveslens dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 10/02/2007, 07h06
  4. [Excel] Exporter un tableau vers excel
    Par legillou dans le forum Documents
    Réponses: 8
    Dernier message: 08/02/2006, 14h37

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