700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > POI XWPFDocument 导出word目录详解

POI XWPFDocument 导出word目录详解

时间:2018-11-21 16:56:46

相关推荐

POI XWPFDocument 导出word目录详解

完整代码,代码为main方法直接运行,该代码实现了对目录样式,布局,标题,位置的修改,但是无法自动获取页码,只可以手动添加目录中对应的页码,或者设置为空。下方资源运行环境:

Windows10JDK1.8org.apache.poi-3.14

通过XWPFDocument生成目录

正常情况下,通过XWPFDocument自带的createTOC(),可以生成目录,但是有一些缺点:

目录标题无法更改,只能显示英文样式不够美观,无法布局按照顺序,只能在word中写入所有内容后在掉createTOC()生成目录,导致目录在最下方

下面我们重写createTOC()来完成对目录样式,布局,标题,位置的修改

/*** 生成目录* @param doc*/public static void createTOC(XWPFDocument doc) {CTSdtBlock block = doc.getDocument().getBody().addNewSdt();ExportWord toc = new ExportWord(block);/*当前位置调用添加正文的方法,需要传参XWPFDocumen对象*/writeAllNews(doc);List<XWPFParagraph> paragraphs = doc.getParagraphs();for (XWPFParagraph par : paragraphs) {String parStyle = par.getStyle();if (parStyle != null && parStyle.startsWith("Heading")) {//获取书签,书签的对应关系很重要,关系到目录能否正常跳转List<CTBookmark> bookmarkList = par.getCTP().getBookmarkStartList();try {int level = Integer.parseInt(parStyle.substring("Heading".length()));//添加标题toc.addRow(level, par.getText(), 1, bookmarkList.get(0).getName());} catch (NumberFormatException e) {e.printStackTrace();}}}}

上方就是重写后的代码,首先将目录标题占位在最上方,接着进行内容的写入,最后进行目录的成。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。