Обновление текста XWPFParagraph с использованием Apache POI - PullRequest
4 голосов
/ 09 июля 2010

Мне удалось просмотреть все параграфы в документе, получить текст и все остальное, и я прочитал и понял, как создать документ с нуля. Но как я могу обновить и заменить текст в абзаце? Я могу сделать createRun в абзаце, но это просто создаст новый фрагмент текста в нем.

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

Моя теория состоит в том, что мне нужно добраться до существующего "прогона" в абзаце, который я хочу изменить, или удалить абзац и добавить его снова), но я не могу найти методы для этого.

1 Ответ

11 голосов
/ 31 марта 2011

Вы не можете изменить текст на 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);
}

Это гарантирует, что у вас будет только один текстовый прогон (первый), и заменит весь текст на тот, который вы предоставили.

...