Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2117 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Substitution de texte dans un fichier docx en utilisant Apache POI

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Substitution de texte dans un fichier docx en utilisant Apache POI

n°1955841
MiKL1981
Posté le 07-01-2010 à 15:36:13  profilanswer
 

Bonjour,
 
Je suis actuellement stagiaire en développement informatique. Mon projet de stage consiste en la création d’une application générant des documents MS Office Word 2007 (Office Open XML) en langage Groovy ou JAVA. Je réussi à remplacer les images correspondant au graphique, mais je ne parviens pas à substituer une clé du type $$$texteAsubstituer par une chaine de caractères. Ce que je parviens à faire de mieux est une concaténation à la suite de la clé.
 
Je parviens effectivement sans problème à parcourir chaque Paragraph du Document (xwpfDoc.getParagraphs(i)), par contre à l'étape suivante je ne parviens pas à parcourir les Run (je ne trouve pas de méthode du genre paragraph.getRuns()) . Ceci pose un problème pour substituer le mot clé par le texte de remplacement au bon endroit, car je ne parviens pas à utiliser le Run spécifique contenant le mot clé. Actuellement pour ajouter du texte au Paragraph, je fais :
...
HWPFRun unRun = paragraph.createRun();
unRun.setText(texteDeRemplacement);

...
Ceci ajoute le texte de remplacement dans un nouveau Run, à la suite des Run existant, dans le paragraphe contenant le mot clé. Pour que le mot clé n'apparaisse pas sur le document final, je l'ai placé en fin de Paragraph en police 1 et en couleur invisible. Cette méthode est très loin d'être élégante et pose des problèmes lors de la modification du document type par les utilisateurs finaux. Je ne trouve pas non plus de méthode de substitution de texte pour effectuer l'étape suivante.
 
Je ne trouve pas de méthode dans les API Apache POI (XWPF) permettant d'explorer les Run individuellement, par contre je trouve cette méthode dans les API Apache POI (HWPF) :
...
int numCharRuns = paragraph.numCharacterRuns();
for (int j = 0; j < numCharRuns; j++) {
CharacterRun charRun = paragraph.getCharacterRun(j);
text = charRun.text();
if (text.contains(key)) {
int start = text.indexOf(key);
charRun.replaceText(key, value, start);
}
}

...
 
Comment puis-je explorer et agir individuellement sur chaque Run d'un fichier docx, à l'aide des API Apache POI ou d'une autre librairie?
 
Je vous serrai très reconnaissant si vous pouviez me donner une piste ou un exemple me permettant d'atteindre mon but...
 
Par avance merci pour toute aide ou proposition.


---------------
When everything goes wrong, there's always chocolate!
mood
Publicité
Posté le 07-01-2010 à 15:36:13  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Substitution de texte dans un fichier docx en utilisant Apache POI

 

Sujets relatifs
Site web en java (jsp/servlet) sous Apache/Tomcat[SHELL] Ajouter une chaine de caractère particulière dans un fichier
Recharger un fichier javascript à la voléeCréation d'un fichier config a l'aide de tableaux
Trouver patterns dans texteTemplate de fichier de conf
Insertion/Extraction de données formatées d'un fichier texteFaire que le texte contourne l'image
complèter l'éditeur de texte VisualWebDeveloper 
Plus de sujets relatifs à : Substitution de texte dans un fichier docx en utilisant Apache POI


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR