我试图用apache-poi删除.docx文件中的一行,但无法删除
我可以更改一行并使其成为"空";但该行是空的,而不是删除的
我有一个如下的代码,但它只是使一行为空。
XWPFDocument doc = new XWPFDocument(OPCPackage.open(templatesPath + templateName));
for (XWPFParagraph p : doc.getParagraphs()) {
List<XWPFRun> runs = p.getRuns();
if(runs != null){
for(int i = 0; i < runs.size(); i++){
String line = p.getText();
if(line != null && line.contains("@@THE_LINE_WILL_BE_DELETED@@")){
runs.get(i).setText(null,0);
// Here I need to delete the instead of setting as a null.
}
}
}
}
你知道如何删除docx中我想要的行吗?我在其他问题或论坛中搜索了很多,但找不到?
XWPFDocument
有方法removeBodyElement
,但由于不是每个元素都需要是Paragraph,我们可以过滤body元素,然后删除特定的段落,如下所示:
List<IBodyElement> elements = doc.getBodyElements();
for (int i = 0; i < elements.size(); i++) {
var elem = elements.get(i);
if(!elem.getElementType().equals(BodyElementType.PARAGRAPH)) continue;
String line = ((XWPFParagraph) elem).getText();
if (line != null && line.contains("@@THE_LINE_WILL_BE_DELETED@@")) {
doc.removeBodyElement(i);
}
}