Insérer un saut de ligne à l'intérieur d'un paragraphe dans XWPFDocument
Je suis en train d'écrire des valeurs dans un modèle word à l'aide d'apache poi 3.8. J'ai remplacer des chaînes de caractères dans un fichier word (touches) avec les valeurs requises, par exemple un document word contient un paragraphe contenant la clé %Entry1%, et je veux le remplacer par "Entrée de texte ligne1 \nnew ligne". Toutes remplacé les clés et les valeurs sont stockées dans une Carte dans ma réalisation.
Map<String, String> replacedElementsMap;
Le code pour HWPFDocument est:
Range range = document.getRange();
for(Map.Entry<String, String> entry : replacedElementsMap.entrySet()) {
range.replaceText(entry.getKey(), entry.getValue());
}
Ce code fonctionne très bien, j'ai juste à mettre les \n dans l'entrée de la chaîne pour un saut de ligne. Cependant je ne trouve pas de méthode similaire pour XWPFDocument. Mon code actuel pour XWPFDocument est:
List<XWPFParagraph> xwpfParagraphs = document.getParagraphs();
for(XWPFParagraph xwpfParagraph : xwpfParagraphs) {
List<XWPFRun> xwpfRuns = xwpfParagraph.getRuns();
for(XWPFRun xwpfRun : xwpfRuns) {
String xwpfRunText = xwpfRun.getText(xwpfRun.getTextPosition());
for(Map.Entry<String, String> entry : replacedElementsMap.entrySet()) {
if (xwpfRunText != null && xwpfRunText.contains(entry.getKey())) {
xwpfRunText = xwpfRunText.replaceAll(entry.getKey(), entry.getValue());
}
}
xwpfRun.setText(xwpfRunText, 0);
}
}
Maintenant le "\n"-chaîne n'a pas de conséquence dans le transport de retour, et si j'utilise xwpfRun.addCarriageReturn();
je viens d'obtenir un saut de ligne après le paragraphe. Comment dois-je créer de nouvelles lignes dans xwpf correctement?
XML ne contient que le saut de ligne, mais je voulais une nouvelle pause après chaque saut de ligne symbole, de sorte que dans la fin, j'ai dû créer de nouveaux paragrpahs manuellement.
OriginalL'auteur Vladimir Beletskiy | 2013-02-12
Vous devez vous connecter pour publier un commentaire.
J'ai une autre solution et il est plus facile:
run.addCarriageReturn();
et ne fonctionne pas. Après le changement derun.addBreak
, selon vous suggérer, fonctionne très bien. Très bien, mais... pourquoi?OriginalL'auteur jackmis
Après tout, j'avais pour créer des paragraphes manuellement. En gros, j'ai divisé la chaîne de remplacement d'un tableau et de créer un nouveau paragraphe pour chaque élément du tableau. Voici le code:
OriginalL'auteur Vladimir Beletskiy