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 :

POI créer OUI, lire NON


Sujet :

Documents Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Par défaut POI créer OUI, lire NON
    Bonjour, je suis un peu dubitatif avec ceci :

    Sous Eclipse je crée un fichier Word et tout se passe bien

    Je le lis avec WORD --> OK

    Mais si je veux le lire dans la console --> rien

    Je ne comprends pas , Merci pour votre aide

    Voici les 2 codes écriture et lecture

    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
     
    package jeter;
     
     
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
     
    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.usermodel.CharacterRun;
    import org.apache.poi.hwpf.usermodel.Range;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;
     
    public class CreerFichierWord {
     
    	public static void main(String[] args)throws IOException{
     
    		File file = new File("Exemple.doc");
    		POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
     
    		HWPFDocument doc = new HWPFDocument(fs);
     
    		Range range = doc.getRange();
     
    		CharacterRun run = range.insertAfter("Hello World!");
    		run.setFontSize(2 * 18);
    		run.setBold(true);
    		run.setItalic(true);
    		run.setCapitalized(true);
    		OutputStream out = new FileOutputStream(new File("Exemple.doc"));
    		doc.write(out);
    		out.flush();
    		out.close();
     }
    }

    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
     
    package jeter;
     
     
    import java.io.File;
    import java.io.FileInputStream;
     
    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.extractor.WordExtractor;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;
     
    public class LireFichierWord {
     
    	public void readDocFile() {
     
    		File docFile = null;
    		WordExtractor docExtractor = null ;
    		try {
    		docFile = new File("Exemple.doc");
    		FileInputStream fis = new FileInputStream(docFile.getAbsolutePath());
    		POIFSFileSystem fs = new POIFSFileSystem(fis);
     
    		HWPFDocument doc = new HWPFDocument(fs);
     
    		docExtractor = new WordExtractor(doc);
    		}
    		catch(Exception exep)
    		{
    		System.out.println(exep.getMessage());
    		}
     
    		System.out.println(docExtractor.getText());
    	}
     
    	public static void main(String[] args) {
    		LireFichierWord reader = new LireFichierWord();
    		reader.readDocFile();
    	}
    }

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Après avoir ajouté le texte, que vaut

    range.numParagraphs()?

    Parce que le WordExtractor, il itère sur tous les paragraphes. Je crois que tu a créé un fichier mal formé sans paragraphe.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Par défaut création revue
    Bonjour, j'ai revu la création de mon fichier Word avec des paragraphes

    tout se passe comme prévu . Lecture correcte avec Word mais pas de résultat

    en lecture console. Pourtant le code de lecture est identique à ceux trouvés sur le net

    Voici le code de création revu :

    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
     
    package jeter;
     
    import java.io.*;
     
    import org.apache.poi.hpsf.CustomProperties;
    import org.apache.poi.hpsf.DocumentSummaryInformation;
    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.usermodel.*;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;
     
    public class CreerFichierWord3 {
     
         public static void main (String[] args) throws Exception {
             POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("empty.doc"));
             HWPFDocument doc = new HWPFDocument(fs);
     
             Range range = doc.getRange();
             Paragraph par1 = range.insertAfter(new ParagraphProperties(), 0);
             par1.setSpacingAfter(200);
             par1.setJustification((byte) 1);
     
             CharacterRun run1 = par1.insertAfter("one");
             run1.setFontSize(2 * 18);
             // font size: twice the point size
     
             Paragraph par2 = run1.insertAfter(new ParagraphProperties(), 0);
             par2.setSpacingAfter(200);
             CharacterRun run2 = par2.insertAfter("two two two two two two two two two two two two two");
             run2.setBold(true);
     
             Paragraph par3 = run2.insertAfter(new ParagraphProperties(), 0);
             par3.setFirstLineIndent(200);
             par3.setSpacingAfter(200);
             CharacterRun run3 = par3.insertAfter("three three three three three three three three three "
                 + "three three three three three three three three three three three three three three "
                 + "three three three three three three three three three three three three three three");
             run3.setItalic(true);
     
             // add a custom document property (needs POI 3.5; POI 3.2 doesn't save custom properties)
     
             DocumentSummaryInformation dsi = doc.getDocumentSummaryInformation();
             CustomProperties cp = dsi.getCustomProperties();
             if (cp == null)
                 cp = new CustomProperties();
             cp.put("myProperty", "foo bar baz");
             dsi.setCustomProperties(cp);
     
            OutputStream out = new FileOutputStream(new File("Exemple.doc"));
     		doc.write(out);
     		out.flush();
     		out.close();
     
         }
     }

  4. #4
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 493
    Par défaut
    J'arrive a lire le document écrit en faisant comme ci dessous :

    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
    	public void readDocFile() {
    		File docFile = null;
    		try {
    		docFile = new File("Exemple.doc");
    		FileInputStream fis = new FileInputStream(docFile.getAbsolutePath());
    		POIFSFileSystem fs = new POIFSFileSystem(fis);
     
    		HWPFDocument doc = new HWPFDocument(fs);
     
    		StringBuilder text = doc.getText();
    		System.out.println(text);
     
    		}
    		catch(Exception exep)
    		{
    		System.out.println(exep.getMessage());
    		}
     
    	}
    Sortie console :
    Hello World!
    Je n'ai jamais utiliser de WordExtractor donc je ne saurais pas dire pourquoi tu ne peux pas lire avec.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Par défaut
    Merci l'ami .

    Meme si je n'en ai pas un besoin immédiat (je teste , c'est tout)

    je te suis reconnaissant pour ta solution

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Il y a quelque chose de foireux dans POI avec le insertAfter je pense. Je viens de faire un test, avec un document qui contient:

    TEST
    TEST

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		Range range = doc.getRange();
    		range.insertBefore("Hohoho!");
    		range.insertAfter("Hello World!");
    		System.out.println("-----"+range.text()+"-----");
    		range = doc.getRange();
    		System.out.println("-----"+range.text()+"-----");
    Ca me sort:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    -----Hohoho!TEST
    TEST
    Hello World!-----
    -----Hohoho!TEST
    TEST
    -----
    Hohoho!TEST
    TEST
    On vois clairement que ce qui est en insertAfter est perdu :/

    Quand on regarde le code de POI, on constate que insertBefore appelle


    adjustFIB( text.length() );

    ce que ne fait pas insertAfter() :/

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

Discussions similaires

  1. [PPT-2007] Créer un PPT depuis Excel possible oui ou non
    Par jeff1494 dans le forum VBA PowerPoint
    Réponses: 7
    Dernier message: 19/04/2012, 09h33
  2. Créer un message d'alerte avec comme solution oui ou non
    Par La_Bande_A_Zozo dans le forum C++Builder
    Réponses: 3
    Dernier message: 24/05/2006, 14h43
  3. Réponses: 7
    Dernier message: 21/05/2004, 17h13
  4. Conception de Base de données (AutoIncrément oui ou non)
    Par matgel dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 16/04/2004, 08h47
  5. Réponses: 5
    Dernier message: 11/01/2004, 20h17

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