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

Documents Java Discussion :

probleme pour parcourir les lignes de fichier Excel


Sujet :

Documents Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut probleme pour parcourir les lignes de fichier Excel
    Salut;

    j'ai une liste des noms que je voudrais comparer leurs elements avec les element de la 1ere colonne d'un fichier excel..alors si'ils sont égales je voudrais afficher le contenu de la 2 ème colonne qui lui correspond.. le fichier excel contient (2 colonnes(le premier ayant les memes éléments de la liste ;la 2 ème colonne contient des noms complets de ce dernier ;donc je veux faire la correspondance mais j'arrive pas à résoudre ce problème)

    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
     
     
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
     
    import java.io.IOException;
    import java.util.ArrayList;
     
     
    import java.util.Iterator;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.read.biff.BiffException;
     
     
     
    import org.apache.poi.hssf.usermodel.HSSFSheet;
     
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
     
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.ss.usermodel.Cell;
    import org.jdom2.JDOMException;
    public class ReadExcel {
     
    public static void main( String [] args ) throws FileNotFoundException, IOException, JDOMException, BiffException {
     
     
    Reader_xml readr= new Reader_xml();
     ArrayList<String> listenam=readr.getName("hello.xml");
     
    File f= new File(" info.xls");
    Workbook w;
    w =Workbook.getWorkbook(f);
     
    Sheet sheet = w.getSheet(0);
     
    int j=0 ;  
    while(j<listenam.size()){
        String cha=listenam.get(j);
       //System.out.println(cha);
     
    for(int i=0;i<sheet.getRows();i++){
     
     
            jxl.Cell cell=  sheet.getCell(0,i) ;
               String chainee= cell.getContents();
     
               if(cha.equalsIgnoreCase(chainee)){
               System.out.println(chainee);
               j++;
     
               }
               else{  i++;}
     
     
     }
     
    }
     
    }
    }
    J'ai fait beaucoup de recherches ....Comment acceder à un element de la colonne pour que je puisse le comparer avec l'élement de la liste s'il est égale alors je récupère l'élement de la 2éme colonne si non j'avance à la prochaine ligne pour le chercher encore et ;mais j'arrive pas à trouver la solution


    Prière de vous m'aider


    Merciii d'avance
    Images attachées Images attachées  

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu as un problème d'algorithme. Si on simplifie, tu as :
    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
     
    List<String> mots = ...
    List<String> colonneExcel = ...
    int j=0;
    while( j<mots.size() ) {
     
           for(int i=0; i<colonneExcel.size(); i++) { // 2
     
                  if ( colonneExcel.get(i).equals(mots.get(j) ) {
     
                        // mot trouvé
                        j++;
     
                  }
                  else {
     
                       i++; // 1
     
                  }
     
          }
     
     
    }
    La ligne que j'ai commentée "1" incrémente i si les deux mots ne sont pas égaux. Or on incrémente i à chaque tour de boucle (ligne commentée "2"). Donc, si les deux mots ne sont pas égaux, on incrémente 2 fois i, donc ça veut dire que potentiellement on saute des lignes dans la feuille excel. De plus, si le mot n'existe pas dans la colonne, tu as une boucle infinie (comme j n'est incrémenté que si on trouve).

    L'algorithme le plus simple est de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(String mot : mots) {
     
           chercherMot( colonneExcel, mot);
     
    }
    avec chercherMot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for(int i=0; colonneExcel.size(); i++) {
     
       if( colonneExcel.get(i).equals(mot) ) {
           // on a trouvé
           break;
      }
     
     
    }
    Une autre solution serait d'utiliser indexOf :

    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
     
    List<String> columnExcel = new ArrayList<>();
    // on charge d'abord la colonne dans une liste
    for(int i=0;i<sheet.getRows();i++){
            Cell cell=  sheet.getCell(0,i) ; 
            columnExcel.add(cell.getContents());
    }
     
    for(String mot : listeMots) { 
     
            int j = columnExcel .indexOf(mot);
     
            if ( j==-1 ) {
                System.out.println("Mot " + mot + " non trouvé");
            }
            else {
                System.out.println("Mot trouvé pour " + mot + " : " + sheet.getCell(1,i).getContents());
            }
     
     }
    Tu peux même utiliser la méthode findCell directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for(String mot : listeMots) { 
     
            Cell cell = sheet.findCell(mot, 0, 0, 0, sheet.getRows());
     
            if ( cell==null ) {
                System.out.println("Mot " + mot + " non trouvé");
            }
            else {
                System.out.println("Mot trouvé pour " + mot + " : " + sheet.getCell(1,cell.getRow()).getContents());
            }
     
     }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut
    Salut encore;

    la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cell cell=  sheet.getCell(0,i) ;
    jxl.Cell cell=  sheet.getCell(0,i) ;
    n'affiche pas le contenu d'une colonne que j'ai besoin elle affiche des numéros que le fichier excel ne les contient meme pas..je ne sais pas comment faire ca..

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    getCell() retourne en effet une cellule, pas son contenu. Et pour avoir son contenu, sous forme de String (de manière quick&dirty, mais comme ton fichier ne contient que des String, ça devrait passer), on appelle Cell.getContents(). Le code que tu avais écrit le fait, celui que je te montre aussi, je ne vois pas où est le problème.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut
    je voudrai recuperer le contenu d'une colonne 1 par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(int i=0;i<sheet.getRows();i++){
            jxl.Cell cell=  sheet.getCell(0,i) ;
               String chainee= cell.getContents();
            columnExcel.add(chainee);
    for (Iterator it=columnExcel.iterator();it.hasNext();){
     
     
                System.out.println(it.next());}}}}
    mais j'arrive pas à faire ça..
    je voudrai parcourir le fichier excel comme étant un fichier text et recuperer leurs elements à fin de les comparer avec une liste donnée

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut
    En faite puisque j'ai plusieurs colonnes dans le fichier excel, donc c'est trop dur à chaque fois je recupere le contenus des colonnes dans des listes..je trouve que la meilleur solution est de le parcourir comme etant un fichier texte mais j'arrive pas à faire ça..donc j'ai besoin à chaque fois comparer une colonne 1 avec un element de la liste donnée s'il sont egales j'incremente au prochain element de la liste et je recupere le contenu de la meme ligne la colonne 2;et 3 par exemple

    si non j'incremente une ligne pour le trouver ailleurs...

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

Discussions similaires

  1. Bouton pour parcourir les répertoires et lire un fichier?
    Par mamid1706 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 05/08/2007, 15h39
  2. Probleme pour ouvrir les fichiers OpenOffice
    Par Dudul5 dans le forum SharePoint
    Réponses: 7
    Dernier message: 01/06/2007, 10h09
  3. Réponses: 1
    Dernier message: 05/12/2006, 21h39
  4. Réponses: 3
    Dernier message: 07/08/2006, 11h25

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