我需要在Word文档中生成带有缩进和自定义符号的项目列表,这是使用Java和Apache POI API生成的。我已经搜索了一下,但无法找到适用于Word文档的方法。虽然可以在PowerPoint幻灯片中使用文本框来实现此功能,但我不想使用文本框。请告诉我如何实现此功能。非常感谢您的任何帮助。
谢谢! 祝好, Arun Ganesh. P
谢谢! 祝好, Arun Ganesh. P
只有使用2007年的OOXML格式及以上版本(使用POI的XWPF)才能实现这一点。由于它基于XML,您始终可以执行DOM操作来实现所需内容。制作项目符号列表的最简单方法是创建一个项目符号列表,并将书签添加为该项目符号的文本。在处理文档时,找到您的书签,然后获取带有
的DOM节点。`org.w3c.dom.Node bkmk = bookmark.getctBookmark).getDomNode();`
然后,复制bkmk节点的父级,即段落标签。现在你有了一个重复的段落标签,它具有成为项目符号列表一部分所需的所有子标签。在OOXML中,没有项目符号列表的结构,它只是具有类似编号子标记的段落的连续序列。
<w:p>
<w:pPr>
<w:pStyle w:val="style0" />
<w:numPr>
<w:ilvl w:val="1" />
<w:numId w:val="2" />
</w:numPr>
<w:tabs>
<w:tab w:leader="none" w:pos="1807" w:val="left" />
</w:tabs>
<w:spacing w:after="0" w:before="120" />
<w:ind w:end="907" w:hanging="360" w:start="907" />
<w:jc w:val="both" />
</w:pPr>
<w:bookmarkStart w:id="1" w:name="GIVES" />
<w:r>
<w:t>To be inserted Next Bullet</w:t>
</w:r>
<w:bookmarkEnd w:id="1" />
<w:r>
<w:rPr>
<w:rFonts w:eastAsia="Times New Roman" />
<w:color w:val="000000" />
<w:lang w:eastAsia="en-US" />
</w:rPr>
</w:r>
</w:p>
NodeList nl;
XPath xp = XPathFactory.newInstance().newXPath();
NamespaceContext nsContext = new NamespaceContext(){
@Override public String getNamespaceURI(String prefix) {
if (prefix.equals("w")) {
return "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
}
return null;
}
@Override public String getPrefix(String namespaceURI) {
return null;
}
@Override public Iterator<?> getPrefixes(String namespaceURI) {
return Collections.emptyList()
.iterator();
}
};
xp.setNamespaceContext(nsContext);
nl = (NodeList) xp.evaluate("w:r/w:t", copy, XPathConstants.NODESET);
paragraph.getParentNode().insertBefore(bkmk, paragraph);
来获得所需的任意多个项目符号。如果您这样做 `paragraph.getParentNode().append(bkmk)`