我正在尝试从 Microsoft Word 文档中删除一组连续的段落,使用Apache POI
.
据我了解,可以通过删除所有运行来删除段落,这种方式:
/*
* Deletes the given paragraph.
*/
public static void deleteParagraph(XWPFParagraph p) {
if (p != null) {
List<XWPFRun> runs = p.getRuns();
//Delete all the runs
for (int i = runs.size() - 1; i >= 0; i--) {
p.removeRun(i);
}
p.setPageBreak(false); //Remove the eventual page break
}
}
事实上,它有效,但有些奇怪。删除的段落块不会从文档中消失,但会转换为一组空行。就像每个段落都将转换为新行一样。
通过从代码中打印段落的内容,我实际上可以看到一个空格(对于每个删除的空格)。直接从文档中查看内容,启用格式标记的可视化,我可以看到:
¶ 的垂直列对应于已删除元素的块。
你对此有什么想法吗?我希望我的段落被完全删除。
我还尝试通过替换文本(用setText()
)并删除可以自动添加的最终空格,这样:
p.setSpacingAfter(0);
p.setSpacingAfterLines(0);
p.setSpacingBefore(0);
p.setSpacingBeforeLines(0);
p.setIndentFromLeft(0);
p.setIndentFromRight(0);
p.setIndentationFirstLine(0);
p.setIndentationLeft(0);
p.setIndentationRight(0);
但没有运气。