Das Ersetzen eines Texts in Apache POI XWPF funktioniert nicht

Ich versuche gerade, an dem Code zu arbeiten, der in einem vorherigen Beitrag mit dem Namen erwähnt wurdeErsetzen eines Textes in Apache POI XWPF.

Ich habe das Folgende ausprobiert und es funktioniert, aber ich weiß nicht, ob mir etwas fehlt. Wenn ich den Code ausführe, wird der Text nicht ersetzt, sondern an das Ende des Gesuchten angehängt. Ich habe zum Beispiel ein einfaches Word-Dokument erstellt und den Text "test" eingegeben. Wenn ich den folgenden Code ausführe, erhalte ich schließlich das neue Dokument mit dem Text "testDOG".

Ich musste den ursprünglichen Code von String text = r.getText (0) in String text = r.toString () ändern, weil ich beim Ausführen des Codes immer wieder einen NullError erhalten habe.

import java.io.*;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;


public class testPOI {

    public static void main(String[] args) throws Exception{

    String filepath = "F:\\MASTER_DOC.docx";
    String outpath = "F:\\Test.docx";

    XWPFDocument doc = new XWPFDocument(OPCPackage.open(filepath));
    for (XWPFParagraph p : doc.getParagraphs()){
        for (XWPFRun r : p.getRuns()){
            String text = r.toString();
            if(text.contains("test")) {
                text = text.replace("test", "DOG");
                r.setText(text);
            }
        }
    }
   doc.write(new FileOutputStream(outpath));
}

EDIT: Danke für deine Hilfe an alle. Ich habe mich umgesehen und eine Lösung gefundenErsetzen Sie den Tabellenspaltenwert im Apache-POI

Antworten auf die Frage(5)

Ihre Antwort auf die Frage