POI使用筆記,複用樣式,新增書籤等
阿新 • • 發佈:2020-11-25
最近遇到需求需要給文件指定run上新增書籤,網上查到的方法也是需要在run建立之前和之後分別新增書籤的start和end,可檢視http://www.javaear.com/question/47182971.html
試驗過程:建立新的文件,新的段落,呼叫addRun將原來的run add進去,但是後面發現新文件裡面有run下載下來卻是一片空白,後面發現addRun和createRun的區別是createRun時候繫結到了指定paragraph並且還往iruns裡面添加了
所以後面重寫了XWPFParagraph的addRun方法,與createRun保持一致,依舊沒有效果,也沒有找到原因,網上也沒有查到相關資料,只有換成建立新的文件,新的段落,新的run,然後將原文件段落樣式以及run的樣式複用過來。
段落樣式複用:主要是換行,縮排等
newParagraph.getCTP().setPPr(content.getCTP().getPPr());//設定段落樣式,換行,空格等
run樣式複用:字號,顏色,字型等
XWPFRun newRun = paragraph.createRun(); newRun.setText(run.text());//文字資料 newRun.getCTR().setRPr(run.getCTR().getRPr());//樣式
新增書籤:
CTBookmark ctBookmark = paragraph.getCTP().addNewBookmarkStart(); ctBookmark.setName(colorName+ "-" + index); ctBookmark.setId(BigInteger.valueOf(index)); addNewRun(paragraph, run);//此方法是上面樣式複用方法 paragraph.getCTP().addNewBookmarkEnd().setId(BigInteger.valueOf(index));
生成效果: