[POI] HWPF sauvegarder un fichier .doc

Informations et questions sur Apache en général.

Modérateur : Modérateurs

spiritkill
Nouveau membre
Messages : 1
Inscription : mer. 20 juil. 2011, 11:06

[POI] HWPF sauvegarder un fichier .doc

Messagepar spiritkill » mer. 20 juil. 2011, 12:30

Bonjour,

J'ai 2 problèmes avec l'api POI pour modifier un document Word:

1) Après avoir sauvegarder mon "HWPFDocument" que j'ai récupérer d'un fichier .doc, dans un autre fichier .doc, le style de mes paragraphes n'est plus correct (j'ai le même de partout, celui du premier paragraphe)

Code : Tout sélectionner

File iFile = new File("D:/empty.doc");
            File oFile = new File("D:/doc.doc");
            InputStream fis = new FileInputStream(iFile);
            POIFSFileSystem fs = null;
            HWPFDocument doc = null;
            try {
                fs = new POIFSFileSystem(fis);
            } finally {
                fis.close();
            }
            doc = new HWPFDocument(fs);

            OutputStream out = new FileOutputStream(oFile);
            try {
                doc.write(out);
                out.flush();
            } finally {
                out.close();
            }
Ensuite en faisant quelques test, je me suis aperçu que le nombre de paragraphe de mon fichier de destination était de 1 au lieu de 2 mais avec le même texte de dans:

Code : Tout sélectionner

Source:
   Section : 1
   paragraphe : 2
   longueur : 6
Destination:
   Section : 1
   paragraphe : 1
   longueur : 6


2) A la suite de l'utilisation de la méthode "replaceText(String, String)", si elle remplace un mot, le fichier Word généré est corrompu, on ne peut pas l’ouvrir avec Word 2007 mais avec java on peut récupérer le fichier.

Code : Tout sélectionner

File iFile = new File("D:/empty.doc");
            File oFile = new File("D:/doc.doc");
            oFile.createNewFile();
            InputStream fis = new FileInputStream(iFile);
            POIFSFileSystem fs = null;
            HWPFDocument doc = null;
            try {
                fs = new POIFSFileSystem(fis);
            } finally {
                fis.close();
            }
            doc = new HWPFDocument(fs);
           Range r = doc.getRange();
           System.out.println(r.text());
           [b]r.replaceText("<NOM>", "Moi");[/b]
           System.out.println(r.text());
           OutputStream out = new FileOutputStream(oFile);
            try {
                doc.write(out);
                out.flush();
            } finally {
                out.close();
            }


Les "println" me donne ceci:

Code : Tout sélectionner

run:
range: Convocation de <NOM> pour la session  de formation
range: Convocation de Moi pour la session  de formation
BUILD SUCCESSFUL (total time: 1 second)



Si vous avez déjà eu ce problème ou si vous connaissez une solution, je suis preneur.
Merci d'avance.

Revenir vers « Général »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités