Substituindo um texto no Apache POI XWPF não está funcionando

Atualmente, estou tentando trabalhar no código mencionado em uma postagem anterior chamadaSubstituindo um texto no Apache POI XWPF.

Eu tentei o abaixo e funciona, mas não sei se estou faltando alguma coisa. Quando executo o código, o texto não é substituído, mas adicionado ao final do que foi pesquisado. Por exemplo, eu criei um documento básico do word e digitei o texto "test". No código abaixo, quando o executo, recebo o novo documento com o texto "testDOG".

Eu tive que alterar o código original de String text = r.getText (0) para String text = r.toString () porque eu recebia um NullError enquanto executava o código.

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: Obrigado por sua ajuda a todos. Eu procurei e encontrei uma solução emSubstituir valor da coluna da tabela no Apache POI

questionAnswers(5)

yourAnswerToTheQuestion