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 :

Modifer le texte d'un fichier word avec POI


Sujet :

Documents Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Modifer le texte d'un fichier word avec POI
    Bonjour à tous,

    Je suis en train de développer une application permettant un pré remplissage de documents word (.doc, .docx, .dot). J'utilise Eclipse et grâce à la librairie POI je peux ouvrir ce type de document.
    Mon problème est dès que j'essaye de modifier le texte d'un des documents la mise en page est changé (pour les tableaux), certains objets n'apparaissent plus(case à cocher) et les images sont remplacées par des cadres barrés d'une croix rouge.

    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
     
    public static void main( String[] args )
    	{
    		String filesname = "../CASPER/Img/test.rtf";
    		POIFSFileSystem fs = null;
    		try
    		{
    			fs = new POIFSFileSystem(new FileInputStream(filesname));
     
    			HWPFDocument doc = new HWPFDocument(fs);
    			Range range = doc.getRange();
    			for (int i = 0; i < range.numSections(); i++) 
    			{
    				Section section  = range.getSection(i);
    				for (int x = 0; x < section.numParagraphs(); x++) 
    				{
    					Paragraph p = section.getParagraph(x);
    					for (int z = 0; z < p.numCharacterRuns(); z++) 
    					{
    						//character run   
    						CharacterRun run = p.getCharacterRun(z);   
    						//character run text   
    						String text = run.text();   
    						if( text.contains("DEMANDE"))
    						{
    							run.insertAfter("Eulu");
    						}
    					}
    				}
    			}
    			OutputStream out = new FileOutputStream(new File("../CASPER/Img/sample2.dot"));
    			doc.write(out);
    			out.flush();
    			out.close();
     
    			//			WordExtractor we = new WordExtractor(doc);
    			//			String[] paragraphs = we.getParagraphText();
    			//
    			//			System.out.println( "Word Document has " + paragraphs.length + " paragraphs" );
    			//			for( int i=0; i<paragraphs .length; i++ ) {
    			//				paragraphs[i] = paragraphs[i].replaceAll("\\cM?\r?\n","");
    			//				System.out.println( "Length:"+paragraphs[ i ]);
    			//			}
     
     
    		}
    		catch(Exception e) 
    		{ 
    			e.printStackTrace();
    		}
    	}
    j'imagine que le problème c'est que j'ouvre le document en ne m'intéressant qu'à la partie texte de celui ci mais je ne trouve pas le moyen de faire autrement.

    Si vous avez des idées je vous en remercie d'avance..
    Sinon y a t'il un moyen de décompresser un document word en fichiers XML ou un autre format puis de modifier le bon fichier?

    Merci encore pour vos réponses

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Il y a des incohérences entre ce que tu écris ("ouverture de fichiers .doc, .docx, .dot") et ton code, où tu ouvres un fichier rtf.

    - POI ne te permettra d'éditer correctement les fichiers docx qui ne sont pas encore supportés.

    En revanche, les fichiers docx sont justement une compression de fichiers XML. Tu peux les extraire en considérant ton fichier docx comme un fichier ZIP.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Oui pardon cela faisait partie de mes derniers tests il s'agit bien en réalité de documents word type doc, dot ou docx.

    Pour les DOCX :
    J'ai renommé un .docx en .zip puis décompresser dans un dossier qui contient d'autres sous dossiers et des fichiers XML j'aimerais éditer celui qui contient que le texte je pensais que c'était document.xml mais ce n'est pas le cas.

    Pour les autres formats :
    Mes "premiers" tests portaient justement sur un .dot contenant des images et des tableaux. Dès que je modifie une chaîne de caractère grâce au code plus haut le fichier résultat ne contient plus les images, cases à cocher.

    Merci pour ta réponse

Discussions similaires

  1. [XL-2007] Rechercher et afficher un text dans un fichier Word avec macro Excel
    Par ypelissier dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/03/2012, 17h51
  2. Créer un fichier word avec image et texte dedans
    Par nocolach dans le forum MATLAB
    Réponses: 3
    Dernier message: 02/07/2008, 01h19
  3. [C#] extrairedu texte d'un fichier Word
    Par arasium dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/10/2006, 20h45
  4. [COM] Extraire le texte d'un fichier "word" (.doc) avec
    Par ptikiwi dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 09/06/2006, 18h06

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