java poi 设置标题_poi生成Word时指定文本样式,如“正文”,“标题1”,“标题2”等...

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里的值,然后再用代码去设置值就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值