Trouver une adresse mail dans un fichier word

vallytiana Messages postés 25 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 juin 2006 - 31 mai 2006 à 14:35
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 9 juin 2006 à 17:41
Bonjour,

Voici mon problème et je suis une débutante en Java,

J'ai un répertoire qui contient plusieurs CV word. Le but étant de pourvoir récupérer toutes les adresses e-mails qui se trouvent dans chaque CV et de les stocker ensuite sur un autre fichier (txt ou doc ou n'importe quoi).

Pour le moment, je suis bloquée à 100%. Merci beaucoup!!!!






malagasy hatrany

48 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
31 mai 2006 à 16:00
Salut,


pour la lecture et/ou ecriture de données dans des fichiers word ou
autres formats foireux made in crosoft en java tu dois passer par une
api externe (ou t'en faire une mais la faut commencer par une formation
sur les standards crosoft).


en api tu peux utiliser POI (made in apache), ou passer directement par les api oO (openOffice) qui comme POI respecte réellement l'open document (OASIS)

WORA
0
vallytiana Messages postés 25 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 juin 2006
31 mai 2006 à 16:14
je ne comprends rien de ce que vous dites.
n'y a-t-il pas un moyen de faire un simple code pour faire l'algorithme suivant:

1- accéder au répertoire
2- récupérer le nom des fichiers ".doc" et les mettres dans un tableau
3- fonction récolter mail
     Pour chaque fichier du tableau
      {
             - chercher l'adresse mail dans ce fichier
             - stocker ce mail dans un fichier ".txt" par exemple
       } (ainsi de suite)
En sortie, on a un fichier avec une liste de mails!!!!!!!!!

malagasy hatrany
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
31 mai 2006 à 16:16
et non lol
il te faut une api speciale comme te la indique twinuts

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
31 mai 2006 à 16:20
Salut,


essaye d'editer un .doc en mode text avec wordpad tu va vite comprendre que dedans c'est tout sauf du texte

WORA
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vallytiana Messages postés 25 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 juin 2006
31 mai 2006 à 16:22
ce n'est donc pas possible de faire un simple openfile (vu que le file ici c'est word) et de parcourir chaque bit??? on m'a dit que c'est faisable en ".txt"

ou est-ce que le gros du problème c'est la récupération de la liste des fichiers????

à quoi sert cet api exactement et c'est quoi un api????????

malagasy hatrany
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
31 mai 2006 à 16:24
fait comme twinuts te dit essai d'ouvrir un doc avec notepad et tu comprendras
une api est une bibliotheque que t'ajoute pour beneficier de ses fonctions

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
HSylvio Messages postés 116 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 14 juin 2012
31 mai 2006 à 16:39
Comme on te l'a dit, c'est possible et très facile avec un .txt parce qu'il n'y a que du texte dans un
.txt.

Maintenant si tu ouvres un fichier enregistré par word tu verras plein de caracrères bizzares, et pas de texte compréhensible car ces fichiers contiennent plein d'informations de mise en forme, couleurs, polices etc... et utilisent pour ce un code qui n'est pas le meme que l'ASCII par exemple.
C'est pour cela que tu dois utiliser une API, ensemble de classes/fonctions, qui te permettra de récupérer le TEXTE des document .doc ; TEXTE dans lequel tu chercheras les @ pour la récupération de l'adresse e-mail.

Ceci n'est utile que pour la partie 3.A
1- accéder au répertoire   // ca devrait aller, utilises un JFileChooser
2- récupérer le nom des fichiers ".doc" et les mettres dans un tableau  // facile pour toi....
3- fonction récolter mail
     Pour chaque fichier du tableau
      {
          A- RECUPERER LE TEXTE DES DOCUMENTS!!!   // tu n'avais pas pensé a ça mais c ce kon texplique
          B- chercher l'adresse mail dans ce fichier   //   commence par chercher @ puis cherches retourligne ou espace avant et apres
          C- stocker ce mail dans un fichier ".txt" par exemple   // quand tu en seras là ca sera du space cake !!!
       } (ainsi de suite)

   Voila ben j'te conseille des tutoriaux (sur ce site par ex.) pour lire/ecrire dans les fichiers;
Sinon j'écouterai WORA pour le nom de l'api à ta place...
Bonne prog.
0
vallytiana Messages postés 25 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 juin 2006
31 mai 2006 à 17:03
ok, je vais essayer et je vous en donnerai des nouvelles!!!!! ;-)






malagasy hatrany
0
vallytiana Messages postés 25 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 juin 2006
31 mai 2006 à 17:06
bon, si je comprends bien, dans ce POI, il y a une fonction qui me permet de récupérer le texte d'un document word???

malagasy hatrany
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
31 mai 2006 à 17:13
Allé je suis sport today c'est cadeau


1- accéder au répertoire   // ca devrait aller, utilises un JFileChooser

2 - récupérer le nom des fichiers ".doc" et les mettres dans un tableau  // facile pour toi....


//Cette classe permet d'appliquer un filtre pour le JFileChooser et ainsi n'afficher que les .doc

//pour plus d'info ref : javadoc


import javax.swing.filechooser.FileFilter;

public class MFileFilter extends FileFilter {


    private String[] prefixes;

    private String desc;


    public MFileFilter(String[] prefixes, String desc) {

        this.prefixes = prefixes;

        this.desc = desc;

    }


    private boolean belongs(String prefixe) {

        for (int i = 0; i < prefixes.length; ++i)

            if (prefixe.equals(prefixes[i]))

                return true;

        return false;

    }


    public boolean accept(File f) {

        if (f.isDirectory())

            return true;

        String prefixe = null;

        String s = f.getName();

        int i = s.lastIndexOf('.');

        if (i > 0 && i < s.length() - 1)

            prefixe = s.substring(i + 1).toLowerCase();

        return prefixe != null && belongs(prefixe);

    }


    public String getDescription() {

        return desc;

    }


    public String[] getPrefixes() {

        return prefixes;

    }

}


.....

import java.io.File;

import javax.swing.JFileChooser;


public classe OpenFileChooser{


    private static final MFileFilter    fileFilter    = new MFileFilter(

           
           
           
           
           
        new String[] {".doc"}, "Fichier
word (*.doc)");

    private File []    
           
              
files           = null;

    private JFileChooser    
               c
               =
null;


    public OpenFileChooser(){

        c = new JFileChooser();

        c.changeToParentDirectory();

        c.setAcceptAllFileFilterUsed(false);

        c.setMultiSelectionEnabled(true);

        c.addChoosableFileFilter(fileFilter);

    }


    public void open(){

        int ret = choice.showOpenDialog(adaptee);


        if (ret == JFileChooser.APPROVE_OPTION)


            files = c.getSelectedFiles();


        else ; //pas de fichiers

    }


    public File[] getFiles(){

       return files;

    }

}


import java.io.File;

import javax.swing.SwingUtilities;


public class Main(){

    private OpenFileChooser ofc = null;

    public Main(){

       ofc = new OpenFileChooser();

       ofc.open();

       File [] files = ofc.getFiles();

       if(files != null)

          for(File f : files){

             //f représent le fichier word courrant

             //maintenant
te reste plus qu'a regarder la doc de POI ou une autre api
si tu veux et

             //reprendre les exemple permettant d'editer un fichier word

          }

    }


    public static void main (String [] args){

        SwingUtilities.invokeLater(new Runnable(){

            public void
run(){           

                new Main();

            }

        });

    }

}

WORA
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
31 mai 2006 à 17:15
POI c'est le projet dans le projet il y a

    - POIFS

    - HSSF

    - HWPF

    - ...


toi ce qui t'interesse c'est HWPF

WORA
0
HSylvio Messages postés 116 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 14 juin 2012
1 juin 2006 à 14:16
Ah ben voila du travail de papa!!!
Toutefois j'ai trouvé une erreur fort remarquable :
(... c'est pas c'te faute là qui va te poser pb longtemps ...)
public classe OpenFileChooser{

Ben alors on a meme pas fait du ctrl+C - ctrl+V ?!?

( desole Valitianna mais bon si j'etait un gros gay j'lui mangerai bien la cacahuete à tonton Twinuts...
... d'ailleurs il a deja fait les 3/4 de ton travail; ca mériterai bien, non??)

Allez ben
0
vallytiana Messages postés 25 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 juin 2006
1 juin 2006 à 14:35
Coucou!

Merci beaucoup Twinuts!!!!!!!

J'ai vu quelques erreurs oui mais dans MFileChooser, "public boolean accept(File f) {" donne toujours "Cannot resolve symbol"

Sinon, à corriger : public class Main() >>>>>>>>> pas de parenthèse!

malagasy hatrany
0
vallytiana Messages postés 25 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 juin 2006
1 juin 2006 à 14:46
cannot resolve symbol aussi pour :
- adaptee
- et choice
dans

int ret = choice.showOpenDialog(adaptee);







malagasy hatrany
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
1 juin 2006 à 15:29
Salut,


ouais dsl j'ai fait ca vite fait en 5min avant ma pause avec des vieux
bouts de C/C pour les classes MFileChooser et OpenFileChooser donc
corrections


public class OpenFileChooser{


    private static final MFileFilter    fileFilter    = new MFileFilter(

           
           
           
           
           
        new String[] {".doc"}, "Fichier
word (*.doc)");

    private File []    
           
              
files           = null;

    private JFileChooser    
               c
               =
null;


    public OpenFileChooser(){

        c = new JFileChooser();

        c.changeToParentDirectory();

        c.setAcceptAllFileFilterUsed(false);

        c.setMultiSelectionEnabled(true);

        c.addChoosableFileFilter(fileFilter);

    }


    public void open(){

        int ret = c.showOpenDialog(null);

        if (ret == JFileChooser.APPROVE_OPTION)

            files = c.getSelectedFiles();

        else ; //pas de fichiers

    }


    public File[] getFiles(){

       return files;

    }

}


Dsl fiston mais meme si tu etais gay je ne te laisserai qd meme pas me toucher la cahuette

WORA
0
vallytiana Messages postés 25 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 juin 2006
2 juin 2006 à 10:36
Ca marche sauf que maintenant, ça donne un browser qui est censé retrouver les fichiers words mais ne les voit même pas.
:(






malagasy hatrany
0
vallytiana Messages postés 25 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 juin 2006
2 juin 2006 à 10:38
tout ce que je veux c'est pas un browser mais juste un programme qui me renvoit la liste des fichiers words!!!






malagasy hatrany
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
2 juin 2006 à 11:09
Salut,


ba si tu ne veux pas de browser utilise la classe File et fais le sans UI soit sans le JFileChooser

tu as plein de sources sur le site qui explique comment parser un disque ou un repertoire avec java.io.File

WORA
0
vallytiana Messages postés 25 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 juin 2006
2 juin 2006 à 14:59
J'ai réussi à trouver ça pour lister les fichiers dans un répertoire et je cherche comment faire avec seulement les ".doc"



import java.io.File;

public class FilenameFilter{
    public static void main(String args[]){
          try{
          File dir = new File("C:\\CVWORD");

          String[] children = dir.list();
              if (children == null) {
              System.out.println("Directory does not exist or is not a Directory");
              }
              else {
                  for (int i=0; i<children.length; i++){                 // Get filename of file or directory
                  String filename = children[i];
                  System.out.println(filename);
                  }
              }         
      }
      catch (Exception ioe){
          ioe.printStackTrace();
      }
  }
}






malagasy hatrany
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
2 juin 2006 à 15:22
Ba il te suffi de placer un filtre dans la boucle

public class FilenameFilter{
    public static void main(String args[]){
          try{
          File dir = new File("C:\\CVWORD");

          String[] children = dir.list();
              if (children == null) {
             
System.out.println("Directory does not exist or is not a Directory");
              }
              else {
                 
for (int i=0; i<children.length;
i++){                
// Get filename of file or directory
                 
    String filename = children[i];

               
      if(filename != null &&
filename.endsWith(".doc"))
                 
        System.out.println("Fichier word
trouvé : " + filename);
                  }
             
}         
      }
      catch (Exception ioe){
          ioe.printStackTrace();
      }
  }
}

WORA
0
Rejoignez-nous