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 :

Parcours colonne fichier Excel [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2012
    Messages : 77
    Points : 85
    Points
    85
    Par défaut Parcours colonne fichier Excel
    Bonjour,

    J'ai une question très bête mais bon, c'est le matin on va dire!

    Voilà, je dois parcourir le contenu d'un fichier Excel.
    Plus précisément, je dois vérifier si dans la colonne B (string) un nom correspond à ce que je cherche.
    Si oui, je dois extraire le contenu de la cellule de la colonne F correspondante (int),
    Sinon, je passe à la ligne suivante.
    En fait, j'ai un peu préparé mon algo:
    Parcours fichier excel
    Pour chaque ligne
    Extraire la chaine de caractère dans la colonne B (ex: fichier_type1_00001)
    Déterminer $nom_court de cette chaine (ex: fichier_type1)
    Si $nom_court == ce que je cherche
    Extraire $nombre dans la colonne F
    Sinon passer à la ligne suivante
    Je code en PHP et je bloque sur plusieurs petites choses. Comme par exemple, comment faire mes deux première boucles, et notament ma boucle For. Je me demande quel argument mettre en deuxième position... En effet, je ne veux pas parcourir indéfiniment le fichier, je veux que la boucle s'arrête si les lignes suivantes sont vides. Je suppose qu'une méthode existe déjà, mais je n'en trouve pas!

    PS : Je débute complètement là dedans, donc pas taper!

    Merci de votre aide

    EDIT : Voici ce que j'ai commencé à coder, mais il me manque la boucle...
    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
    $o_workbook = PHPExcel_IOFactory::load("mon_ficher.xls");
    $o_sheet = $o_workbook->getSheet(0);
    $v_ligne=2;
    //Pour chaque ligne
     
    //Extraire la chaine de caractères contenu dans la cellule (colB)
        $v_chaine = strval($o_sheet->getCell("B".$v_ligne)->getValue());
    //Déterminer nom court de la chaine
        $v_chaine_court = substr($v_chaine, 0, -23);
    //Si la chaine de caractères correspond à ce que je cherche
        switch($v_chaine_court){
            case "BLAHBLAH":
            //Extraire la quantité correspondante dans la colonne F
                $v_nb_docs = intval($o_sheet->getCell("F".$v_ligne)->getValue());
                //Ajouter cette quantité au stock présent dans le tableau de référence
                $v_total_documents_blahblah+=$v_nb_docs;
            break;
            case "ABCDEFG":
            //Extraire la quantité correspondante dans la colonne F
                $v_nb_docs = intval($o_sheet->getCell("F".$v_ligne)->getValue());
                //Ajouter cette quantité au stock présent dans le tableau de référence
                $v_total_documents_abcdefg+=$v_nb_docs;
            break;
        }

  2. #2
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2012
    Messages : 77
    Points : 85
    Points
    85
    Par défaut
    J'avance doucement dans mes recherches, mais j'avance.
    J'ai essayé de boucler avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Foreach($o_sheet->getRowIterator() as $v_ligne)
    Je ne sais pas si ça fonctionne parce qu'en fait, j'obtient cette erreur:
    Catchable fatal error: Object of class PHPExcel_Worksheet_Row could not be converted to string
    concernant cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $v_chaine = $o_sheet->getCell("B".$v_ligne)->getValue();
    Bref, voici mon script après modifications :
    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
    $o_workbook = PHPExcel_IOFactory::load("D:\CourriersCRM\compositionTreatmentTracking".$v_today.".xls");
    $o_sheet = $o_workbook->getSheet(0);
    $v_ligne=2;
    //Pour chaque ligne
    foreach($o_sheet->getRowIterator() as $v_ligne){
        //Extraire la chaine de caractères contenu dans la cellule
        $v_chaine = $o_sheet->getCell("B".$v_ligne)->getValue();
        //Déterminer nom court de la chaine
        $v_chaine_court = substr($v_chaine, 0, -23);
        //Si la chaine de caractères correspondant à ce que je cherche
             switch($v_chaine_court){
                case "BLAHBLAH":
                    //Extraire la quantité correspondante dans la colonne F
                    $v_nb_docs = intval($o_sheet->getCell("F".$v_ligne)->getValue());
                    //Ajouter cette quantité au stock présent dans le tableau de référence
                    $v_total_documents_blahblah+=$v_nb_docs;
                break;
                case "ABCDEFG":
                    //Extraire la quantité correspondante dans la colonne F
                    $v_nb_docs = intval($o_sheet->getCell("F".$v_ligne)->getValue());
                    //Ajouter cette quantité au stock présent dans le tableau de référence
                    $v_total_documents_abcdefg+=$v_nb_docs;
                break;
            }
    }

  3. #3
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2012
    Messages : 77
    Points : 85
    Points
    85
    Par défaut
    J'ai trouvé une solution à mes deux problèmes, (merci le chat!) je vous fait partager mon script fonctionnel:

    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
    foreach($o_sheet->getRowIterator() as $v_ligne){
        $v_index_ligne = $v_ligne->getRowIndex();
        //Extraire la chaine de caractères contenu dans la cellule
        $v_chaine = $o_sheet->getCell("B".$v_index_ligne)->getValue();
        echo "valeur de la cellule : $v_chaine <br/>";
        //Déterminer nom court de la chaine
        $v_chaine_court = substr($v_chaine, 0, -23);
        echo "chaine court : $v_chaine_court <br/>";
        //Si la chaine de caractères correspond à ce que je cherche
            switch($v_chaine_court){
                case "BLAHBLAH":
                    //Extraire la quantité correspondante dans la colonne F
                    $v_nb_docs = $o_sheet->getCell("F".$v_index_ligne)->getCalculatedValue();
                    //Ajouter cette quantité au stock présent dans le tableau de référence
                    $v_total_documents_blahblah+=$v_nb_docs;
                break;
                case "ABCDEFG":
                    //Extraire la quantité correspondante dans la colonne F
                    $v_nb_docs = $o_sheet->getCell("F".$v_index_ligne)->getCalculatedValue();
                    //Ajouter cette quantité au stock présent dans le tableau de référence
                    $v_total_documents_abcdefg+=$v_nb_docs;
                break;
            }
    }

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

Discussions similaires

  1. [SQL2005][SSIS] récupérer nom des colonnes fichier excel
    Par tehes dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/12/2007, 14h00
  2. parcours de lignes et colonnes d'un fichier excel
    Par guintolli dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/12/2007, 11h33
  3. Remplir les colonnes d'un fichier excel
    Par craryb dans le forum MFC
    Réponses: 3
    Dernier message: 14/03/2007, 12h37
  4. Macro VBA Excel : Comparaison des deux 1ères colonnes de 2 fichiers Excel
    Par techneric dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/01/2007, 10h00
  5. [ASE 12.5] MAJ colonne depuis fichier Excel
    Par Thig dans le forum Adaptive Server Enterprise
    Réponses: 1
    Dernier message: 23/11/2006, 14h02

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