使用Apache POI更新XWPFParagraph的文本

Mat*_*ahl 4 java apache-poi

我已经能够遍历文档中的所有段落并获取文本和所有内容,并且我已经阅读并理解了如何从头开始创建文档.但是,如何更新和替换段落中的文本?我可以createRun在一个段落中做,但这只会在其中创建一段新文本.

 ...
 FileInputStream fis = new FileInputStream("Muu.docx");
 XWPFDocument myDoc = new XWPFDocument(fis);
 XWPFParagraph[] myParas = myDoc.getParagraphs();
 ...
Run Code Online (Sandbox Code Playgroud)

我的理论是,我需要在我想要更改的段落中找到现有的"run",或删除段落并再次添加它)但我找不到这样做的方法.

Gag*_*arr 12

您无法直接更改XWPFParagraph上的文本.XWPFParagraph由一个或多个XWPFRun实例组成.这些提供了设置文本的方法.

要更改文本,您的代码应该是这样的:

public void changeText(XWPFParagraph p, String newText) {
   List<XWPFRun> runs = p.getRuns();
   for(int i = runs.size() - 1; i > 0; i--) {
      p.removeRun(i);
   }
   XWPFRun run = runs.get(0);
   run.setText(newText, 0);
}
Run Code Online (Sandbox Code Playgroud)

这将确保您只有一个文本运行(第一个),并将所有文本替换为您提供的文本.