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

Langage PHP Discussion :

Problème création CSV


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 26
    Par défaut Problème création CSV
    Bonjour j'ai un petit soucis sur mon programme il est censé créer un fichier CSV à partir d'un fichier Excel seulement quand je clique sur le bouton qui créé le fichier je ne vois affiché que ";" tout le contenu n'est pas passé comment puis-je modifier mon script pour que cela fonctionne

    voici mon script 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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    <?php
    class MakeCsv{
     
            var $fileName;
            var $csv = array();
    		var $maxY = 0;
    		var $maxX = 0;
     
            function MakeCsv($fileName){
                    $this->fileName = $fileName;
            }
     
     
           function addCol($array,$l){
    				$this->maxX++;
                    $this->csv[$l-1] = $array;
            }
     
            function addLine($array,$c){
    				$this->maxY++;
    				$this->maxX = count($array);
                    for($i=0;$i<count($array);$i++){
                            $this->csv[$i][$c-1] = $array[$i];
                    }
            }
     
             function setValueAt($x,$y,$v){
                    $this->csv[$x-1][$y-1] = $v;
            }
     
            function createCsv(){
                    $fp = @fopen($this->fileName,"w") or
                    die('<br /><b>Fatal error</b>:  Can\'t open <b>'.$this->fileName.'</b> in <b>'.__FILE__.'</b> on line <b>'.(__LINE__-1).'</b><br />');
     
     
    				for($y=0;$y<$this->maxY();$y++){
                            for($x=0;$x<$this->maxX();$x++){
                                    if(!empty($this->csv[$x][$y]))
                                            fwrite($fp,$this->csv[$x][$y],strlen($this->csv[$x][$y]));
                                    fwrite($fp,';',1);
                            }
                            fwrite($fp,"\r\n",2);
                    }
                    fclose($fp);
     
            }
     
     
     
    		function downloadCsv(){
                    header("Content-disposition: attachment; filename=\"$this->fileName\"");
                    header("Content-Type: application/force-download");
                    header("Content-Transfer-Encoding: binary");
                     for($y=0;$y<$this->maxY();$y++){
                            for($x=0;$x<$this->maxX();$x++){
                                    if(!empty($this->csv[$x][$y]))
                                            echo '"'.$this->csv[$x][$y].'"';
                                    echo ';';
                            }
                            echo "\r\n";
                    }
                    exit();
            }
     
     
    		function maxX(){
                    $max = 0;
                    while(list($k,) = each($this->csv)){
                            if($k>$max) $max = $k;
                    }
                    reset($this->csv);
                    return $max+1;
            }
     
    		function maxY(){
                    $max = 0;
                    while(list($k,) = each($this->csv)){
                            while(list($k2,) = each($this->csv[$k])){
                                    if($k2>$max) $max = $k2;
                            }
                            reset($this->csv[$k]);
                    }
                    reset($this->csv);
                    return $max+1;
            }
     
    }
    $mCsv = new MakeCsv('fileName');
    $mCsv->downloadCsv();
    ?>
    et voici mon code HTML pour le formulaire

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form enctype="multipart/form-data" action="testCsv.php" method="POST"> 
    <input type="hidden" name="MAX_FILES_SIZE" value="500000"> 
    <input type="file" name="fileName" size="60"> 
    <p><input type="submit" name="Upload" value="Charger le fichier"> 
    </form>

    Si quelqu'un peut me guider ce serait sympa merci =)

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Par défaut
    Bonjour,

    Après avoir regardé ton code je remarque que la méthode downloadCsv ne remplie jamais le tableau $this->csv.
    Ensuite ton fichier excell c'est celui passé par le formulaire n'est ce pas ? Or ce dernier n'est jamais lu, enfin du moins il n'y a aucun appel de la seule méthode contenant un fopen.

    Enfin, es tu sûr de ton système pour créer un fichier csv à partir d'un excell ? En gros c'est une conversion que tu veux faire ? je ne connais pas trop le domaine mais j'imaginais cela un peu plus compliqué :/.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 26
    Par défaut
    En gros volia ce que font mes fonctions:

    makeCsv(String filename) est le constructeur de la class
    il defini le nom du fichier qui sera créé.

    addLine(String[] line, int numberLine)
    ajoute une ligne ( une ligne est un tableau)
    chaque element du tableau est un element de la ligne.
    on donne le numero de la ligne que l'on souhaite
    remplir.

    addCol(String[] line, int numberCol)
    Idem que pour addLine() mais remplis une colonne.
    prends en 2em parametre le numero de la colonne à
    remplir.

    setValueAt(int x,int y,String v)
    remplis une case aux coordonnées x,y

    maxX() et maxY()
    retourne la taille (en nombre de cellules)
    de lignes et de colonnes du tableau.

    createCsv()
    Creation du fichier csv sur le serveur.

    downloadCsv()
    Creation du fichier csv en memoire pour telechargement!

    je cherche juste à lire mon fichier excel lire les lignes et colonnes, les récupérer et ensuite les écrire dans un fichier au format csv

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Citation Envoyé par Merevinh Voir le message
    je cherche juste à lire mon fichier excel lire les lignes et colonnes, les récupérer et ensuite les écrire dans un fichier au format csv
    Et pour ouvrir ton fichier excel tu utilise quoi ?

Discussions similaires

  1. Problème création fichier CSV
    Par goboben dans le forum Documents
    Réponses: 1
    Dernier message: 04/03/2008, 17h31
  2. .htaccess problème création sous windows
    Par Leviathan_72 dans le forum Apache
    Réponses: 2
    Dernier message: 18/05/2005, 20h29
  3. Problème création et destruction de processus.
    Par loupdeau dans le forum MFC
    Réponses: 5
    Dernier message: 08/04/2005, 13h33
  4. Problèmes création de procédures et de triggers
    Par missllyss dans le forum SQL
    Réponses: 2
    Dernier message: 06/11/2003, 10h42
  5. Problème création de DLL
    Par monsieur.voie.lactee dans le forum C++Builder
    Réponses: 4
    Dernier message: 12/08/2003, 16h56

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