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 :

Contrôles des données d'un fichier Excel


Sujet :

Documents Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Points : 14
    Points
    14
    Par défaut Contrôles des données d'un fichier Excel
    Bonjour à tous,

    Voilà je dois réaliser une appli qui doit lire un fichier Excel en contrôlant les données lu.
    Par exemple, pour la première colonne de ma feuille Excel, les données doivent être d'un format numérique et doivent être de 6 caractère ni plus ni moins.

    Je sais qu'il existe une méthode pour contrôler le nombre de caractère pour une seule cellule [NBCAR()] mais avec cette méthode, on doit impérativement indiquer les cellules à contrôler et donc utiliser cette méthode X fois pour chaque cellules.

    Existerait il une méthode me permettant de contrôler tout un lot de cellule en même temps ?

    Merci d'avance

    Dark_fun

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Quelle librairie utilises-tu pour accéder aux données ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Avec quoi (quelle bibliothèque) est-ce que tu lis ton fichier Excel ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    j'utilise jxl.Workbook

    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
     
    import jxl.*;
    import jxl.Workbook;
    import jxl.read.biff.*;
    import java.io.File;
    import java.io.IOException;
    import jxl.write.WriteException;
    import java.util.Locale;
     
     
    public class ReadExcel {
    	public static void main(String[] args) throws IOException, WriteException, BiffException{
     
            try
            {
            	File f1=new File("C://Documents and Settings/../testappli.xls");
            	WorkbookSettings ws=new WorkbookSettings();
            	ws.setLocale(new Locale("er","ER"));
            	Workbook workbook=Workbook.getWorkbook(f1,ws);
             	Sheet readsheet=workbook.getSheet(0);  
     
                    for (int i = 0; i < readsheet.getRows(); i++){
            		for (int j = 0; j < readsheet.getColumns(); j++){
            			Cell cell = readsheet.getCell(i, j);
            			System.out.print(cell.getContents()+" ");
            		}
            		System.out.println();
            		}
            }
            catch(IOException e)
            {
            	e.printStackTrace();
            }
     
            catch(BiffException e)
            {
            	e.printStackTrace();
            }
    	}
    }

  5. #5
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Tu arrives donc à lire chaque cellule.

    Tu peux contrôler le contenu en utilisant une expression régulière
    avec comme pattern : "[0-9]{6}" c'est à dire 6 positions numériques avec des chiffres entre 0 et 9

    bien sûr, il faut boucler sur chaque cellule, mais c'est rapide.

    Je ne suis pas expert en expression régulière, il faudrait améliorer ce modèle pour vérifier que la longueur est bien égale à 6 (et non pas plus)
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    bien sûr, il faut boucler sur chaque cellule, mais c'est rapide.
    La question était :

    Existerait il une méthode me permettant de contrôler tout un lot de cellule en même temps ?
    mais j'avoue n'avoir pas de réponses, je pense comme nepomucene qu'il va falloir boucler....
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Je vous remercie de vos réponses rapide !
    Je débute plus ou moins en java, est il dur de mettre en places une expression régulière ?
    Dans tous les cas, je me penche directement dessus, je vous tiens au jus

    Merci encore

  8. #8
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Regarde le tuto expression régulière
    Il faut y consacrer une heure mais c'est rentabilisé car ce genre de problème revient tout le temps
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  9. #9
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 288
    Points : 261
    Points
    261
    Par défaut
    Tu peux aussi regarder la librairie Apache Poi pour traiter les fichiers Microsoft. Voici le lien ( Poi Excel )où tu auras des exemples pour manipuler les fichiers Excel. En espérant que ça te sera utile.
    Merci de lire les règles du forum et surtout celle là Message clair et précis.
    Evitons les ctrl c ctrl v => Ne sortons pas les codes de leur contexte sinon ça ne marche pas.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Voilà j'ai fini, je ne sais pas si le code est très optimisé mais ça a l'air de fonctionner après mes quelques tests.

    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
    import jxl.*;
    import jxl.read.biff.*;
    import java.io.File;
    import java.io.IOException;
    import jxl.write.WriteException;
    import java.util.Locale;
     
    import java.util.regex.* ;
     
     
    public class ReadExcel {
     
    	public static void main(String[] args) throws IOException, WriteException, BiffException{
     
            try
            {
            	File f1=new File("C://Documents and Settings/../Modèlev1.0.xls");
            	WorkbookSettings ws=new WorkbookSettings();
            	ws.setLocale(new Locale("er","ER"));
            	Workbook workbook=Workbook.getWorkbook(f1,ws);
     
            	Sheet readsheet=workbook.getSheet(0);
     
            		for (int j = 3; j < readsheet.getColumns(); j++)
            		{
            			Cell cell = readsheet.getCell(0, j);
            			System.out.print(cell.getContents()+" ");
     
                    	Pattern a = Pattern.compile("\\z");
                    	Pattern b = Pattern.compile("\\D");
                    	Matcher c = a.matcher(cell.getContents());
                    	Matcher d = b.matcher(cell.getContents());
     
     
                    	while (c.find())
                    	{
                    	if(c.end()== 6)
                    	{
                    		System.out.println("Nb caract correct");                		
                    	}
                    	else System.out.println("Nb caract non correct"); 
                    	}
                    	if (d.find())
                    	{
                    		System.out.println("Type NN Ok");
                    	}
                    	else System.out.println("Type ok");
            		}
            }
            catch(IOException e)
            {
            	e.printStackTrace();
            }     
            catch(BiffException e)
            {
            e.printStackTrace();
            }
        }
    }

  11. #11
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Pour chipoter, j'ai déplacé la déclaration / compilation des patterns au-dessus de la boucle
    mais sinon si tu ne connaissais pas les expressions régulières c'est très bien !


    Citation Envoyé par Dark_fun Voir le message
    Voilà j'ai fini, je ne sais pas si le code est très optimisé mais ça a l'air de fonctionner après mes quelques tests.

    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
    import jxl.*;
    import jxl.read.biff.*;
    import java.io.File;
    import java.io.IOException;
    import jxl.write.WriteException;
    import java.util.Locale;
    
    import java.util.regex.* ;
    
    
    public class ReadExcel {
    	
    	public static void main(String[] args) throws IOException, WriteException, BiffException{
    		
            try
            {
            	File f1=new File("C://Documents and Settings/../Modèlev1.0.xls");
            	WorkbookSettings ws=new WorkbookSettings();
            	ws.setLocale(new Locale("er","ER"));
            	Workbook workbook=Workbook.getWorkbook(f1,ws);
     
            	Sheet readsheet=workbook.getSheet(0);
    
                    	Pattern a = Pattern.compile("\\z");
                    	Pattern b = Pattern.compile("\\D");
            	
            		for (int j = 3; j < readsheet.getColumns(); j++)
            		{
            			Cell cell = readsheet.getCell(0, j);
            			System.out.print(cell.getContents()+" ");
            			
                    	Matcher c = a.matcher(cell.getContents());
                    	Matcher d = b.matcher(cell.getContents());
                    	
    
                    	while (c.find())
                    	{
                    	if(c.end()== 6)
                    	{
                    		System.out.println("Nb caract correct");                		
                    	}
                    	else System.out.println("Nb caract non correct"); 
                    	}
                    	if (d.find())
                    	{
                    		System.out.println("Type NN Ok");
                    	}
                    	else System.out.println("Type ok");
            		}
            }
            catch(IOException e)
            {
            	e.printStackTrace();
            }     
            catch(BiffException e)
            {
            e.printStackTrace();
            }
        }
    }

    Le temps de réponse est correct ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Non, je ne connaissais pas encore les expressions régulières, mais cela me sera utile pour des besoins précis !

    Encore merci pour votre aide très précieuse, je n'ai plus qu'à continuer sur ma lancé


    ps: le temps de réponse me semble correcte, mais je vérifie qu'une seule colonne pour le moment.
    le temps de réponse risque d'augmenter beaucoup pour des traitements de se genre si le fichier Excel est gros ?

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

Discussions similaires

  1. Exportation des données dans un fichier Excel
    Par Koukouknizou dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 14/07/2007, 14h22
  2. Réponses: 1
    Dernier message: 14/05/2007, 14h52
  3. Réponses: 1
    Dernier message: 09/05/2007, 23h10
  4. updater des données dans mon fichier excel
    Par gantec dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 26/02/2007, 16h01
  5. Réponses: 6
    Dernier message: 08/12/2006, 13h07

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