J'ai une table qui contient des éléments. Je veux définir les noms des éléments dans le document Word, mais chacun dans une nouvelle ligne.XWPFDocument remplacer paragraphe dans une boucle
Je crée le vide ci-dessous:
Lorsque mon texte contient « P01 » Je remplace le texte par le nom, ajoutez une nouvelle ligne et définir un autre texte « P01 ».
public void findAndRemplaceString(XWPFDocument doc, String champs) throws IOException {
for (XWPFParagraph p : doc.getParagraphs()) {
java.util.List<XWPFRun> runs = p.getRuns();
if (runs != null) {
for (XWPFRun r : runs) {
String text = r.getText(0);
if (text != null && text.contains("P01")) {
text = text.replace("P01", champs);
System.out.println("text replaced");
r.setText(text, 0);
//add new line
r.addBreak();
//new "P01" added
r.setText("P01");
}
}
}
}
}
Afin que le prochain nom d'élément soit remplacé dans le paragraphe ci-dessous.
@FXML
void endButton(ActionEvent event) {
String file = "model";
for (Person item : table.getItems()) {
//get the name of item
String a = item.getName();
// get the index of item
int ind0 = table.getItems().indexOf(item);
int ind1 = table.getItems().indexOf(item) + 1;
try {
XWPFDocument doc = new XWPFDocument(new FileInputStream(new File(file + ind0 + ".docx")));
findAndRemplaceString(doc, a);
FileOutputStream fileOutputStream = new FileOutputStream(new File(file + ind1 + ".docx"));
doc.write(fileOutputStream);
fileOutputStream.close();
doc.close();
} catch (Exception e) {
System.out.println("erreur " + e);
}
}
}
Le problème est:
REMPLACER seul le premier nom de l'article et non les autres. Il ne lit pas le nouveau "P01" que j'ai défini.
le 'chaîne text = r.getText (0),' obtient explicitement que la première partie du texte de la course, mais après 'r.setText (texte , 0); r.addBreak(); r.setText ("P01"); 'il y a deux parties de texte. Une très bonne réponse n'est pas possible car vous ne fournissez pas un [Exemple minimal, complet et vérifiable] (https://stackoverflow.com/help/mcve) mais vous pouvez essayer 'String text = r.text();' au lieu. –