Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Apache POI更新XWPFParagraph的文本_Java_Apache Poi - Fatal编程技术网

Java 使用Apache POI更新XWPFParagraph的文本

Java 使用Apache POI更新XWPFParagraph的文本,java,apache-poi,Java,Apache Poi,我能够循环浏览文档中的所有段落,了解文本和所有内容,我已经阅读并理解了如何从头开始创建文档。但是如何更新和替换段落中的文本?我可以在段落中执行createRun,但这只会在其中创建一段新文本 ... FileInputStream fis = new FileInputStream("Muu.docx"); XWPFDocument myDoc = new XWPFDocument(fis); XWPFParagraph[] myParas = myDoc.getParagraphs()

我能够循环浏览文档中的所有段落,了解文本和所有内容,我已经阅读并理解了如何从头开始创建文档。但是如何更新和替换段落中的文本?我可以在段落中执行
createRun
,但这只会在其中创建一段新文本

 ...
 FileInputStream fis = new FileInputStream("Muu.docx");
 XWPFDocument myDoc = new XWPFDocument(fis);
 XWPFParagraph[] myParas = myDoc.getParagraphs();
 ...

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

您不能直接更改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);
}
public void changeText(XWPFParagraph p,String newText){
List runs=p.getRuns();
对于(int i=runs.size()-1;i>0;i--){
p、 联合国(一);
}
XWPFRun=runs.get(0);
run.setText(newText,0);
}

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

谢谢!我会尝试一下,然后再报告。