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