Bonjour,

Aujourd'hui j'ai essayé d'utiliser la partie HWPF de l'API POI qui permet de travailler sur des fichiers microsoft office.
J'avais déjà créé des fichiers excel grâce à cette API néanmoins avec les fichiers word j'ai eu un problème assez incompréhensible.
Tout d'abord je suis un exemple de création de fichier word :

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
 
File f = new File(user.getRept()+"/rapport/empty.doc");
File fout = new File(user.getRept()+"/rapport/"+mdl.getCurrent().getPatient().getNom()+"_"+new SimpleDateFormat("ddMMyyyy_hhmmss").format(new Date())+".doc");
			fout.createNewFile();
			POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(f));
		       HWPFDocument doc = new HWPFDocument(fs); 
		        // centered paragraph with large font size
		        Range range = doc.getRange();
		        Paragraph par1 = range.insertAfter(new ParagraphProperties(), 0);
		        par1.setSpacingAfter(200);
		        par1.setJustification((byte) 1);
		        // justification: 0=left, 1=center, 2=right, 3=left and right
 
		        CharacterRun run1 = par1.insertAfter("one");
		        run1.setFontSize(2 * 18);
		        // font size: twice the point size
 
		        // paragraph with bold typeface
		        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 with italic typeface and a line indent in the first line
		        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(fout);
		        doc.write(out);
 
		        out.flush();
		        out.close();
			return;
Le fichier en entrée est un fichier .doc vide en effet il n'y a apparemment pas de solution pour créer un fichier .doc à partir de rien à cause du header, mais étant donner que je ne suis pas sûr si vous avez une autre solution je suis preneur.
J'en viens à mon problème : Le fichier que je crée est bien un fichier .doc, si je l'ouvre avec word, je trouve le texte que je souhaite sur la première page mais pas seulement ! le fichier augmente de 3 pages toutes les secondes, en effet mon texte se répète pourtant le fichier n'augmente pas de taille. Si je ferme le fichier et que je le re-ouvre, le nombre de pages à diminuer par rapport au moment de la fermeture mais l'augmentation reprend sans s'arrêter. Mon programme est bel et bien fermer et je ne trouve pas de processus utilisant mon proc or word donc c'est bien word qui continue à écrire.
De plus quand j'ouvre le fichier avec openoffice le fichier est vide alors qu'il s'agit bien d'un format compatible. J'avoue ne rien comprendre à ce qui se passe.

Si vous avez une idée n'hésitez pas. Sur le net j'ai trouvé d'autres exemples mais il semble que personne n'est mon problème.

Merci.