POI生成Word时,设置段落的样式
String style = "2"; //标题2的样式
XWPFParagraph xwpfParagraph = doc.insertNewParagraph(run);
xwpfParagraph.setStyle(style);
其实设置其他的样式都一样。
例如:你想设置你的样式为“标题2”(“标题2”只是你在word里看到的标题名称,实际上在xml中的名称可能不一样)
word里:我是标题2的样式 --这个段落在word里设置了标题2的样式 xml里:
我
是标题
2
的样式
而样式的定义是这样的(这些都可以在word转成xml的内容里找到):
到此我们就知道,设置段落样式“标题2”的方法就是: xwpfParagraph.setStyle("2");
上面样式的xml里也可以看到,标题3的样式值是3,所以设置标题3的方法就是: xwpfParagraph.setStyle("3");
问题来了!
如何知道样式的值呢?
代码如下:
/**
* 查找文档样式值
* @param document 文档类
* @param styleName 样式名称
* @return 样式值
* @throws IOException
* @throws XmlException
*/
public static String getStyleValue(XWPFDocument document, String styleName) throws IOException, XmlException {
if (styleName == null || styleName.length() == 0) {
return null;
}
CTStyles styles = document.getStyle();
CTStyle[] styleArray = styles.getStyleArray();
for (CTStyle style : styleArray) {
//用包含会好点
if (style.getName().getVal().contains(styleName)) {
return style.getLink().getVal();
}
}
return null;
}
在word里的样式名称是 标题 2,但xml里就是 ,也就是 标题 2 Char 所以我用contains( )方法。
注意 如果不生效,就先新建一个文档,把段落设置成想要的样式,然后看看段落样式的值是多少就可以了。 我觉得大部分问题的解决方法都可以去看xml里的值,然后再用代码去设置值就好了。