【JAVA poi-tl-ext 富文本转word】

环境

  • jdk 1.8
<dependency>
    <groupId>io.github.draco1023</groupId>
    <artifactId>poi-tl-ext</artifactId>
    <version>0.4.16</version>
</dependency>

使用poi-tl-ext的原因

  • 对比poi原生来说简单方便操作
  • 对比收费软件来说,开源免费,而且效果也很牛

富文本转word代码

public class RichTextParser {
    public static void parseToDocx(String content, FileOutputStream fileOutputStream) throws IOException {
        HtmlRenderPolicy htmlRenderPolicy = new HtmlRenderPolicy();
        Configure configure = Configure.builder()
                .bind("key", htmlRenderPolicy)
                .build();
        Map<String, Object> data = new HashMap<>();
        data.put("key", content);
        XWPFTemplate.compile("D://input.docx", configure).render(data).writeAndClose(fileOutputStream);
    }
}
  • content 富文本内容
  • fileOutputStream 输出流,例如输出到本地磁盘D://2.docx上面
  • D://input.docx 是一个模板docx
    在这里插入图片描述
  • key 是用来绑定富文本内容(可以任意起名字只要能和代码模板对应即可),由于我需要导出的富文本内容是随机且不定格式,所以使用一个key包裹即可
  • HtmlRenderPolicy 就是poi-tl-ext中富文本导出为word的操作插件,这里需要吹捧一下作者,真的好牛
  • poi-tl 还存在各种其他插件,例如表格插件等,适用于各种导出word的操作,还可以自定义插件,也是牛的
  • 富文本部分内容如下
<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><strong>xxx年度安全生产教育培训工作计划</strong></span></p>\n" +
                "<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><span style=\"font-size: 10pt; color: #e67e23;\">(模板,可上传企业自有制度或修改模板)</span></span></p>\n" +
                "<p>&nbsp;</p>\n" +
                "<p><span style=\"font-size: 14pt;\">&nbsp; &nbsp; &nbsp; &nbsp;<span style=\"color: #ba372a;\">为进一步规范公司安全宣传和教育培训工作,不断提高公司员工安全生产意识和安全素质,增强安全生产法制观念,有力推动公司安全生产基础建设、安全生产诚信建设、安全生产标准化建设和企业安全文化建设,确保今年的安全生产目标指标的实现,特制定本计划如下:</span></span></p>
  • 导出内容如下
    在这里插入图片描述
Java中,可以使用POI-TL库来操作Word文档。要在Word文档中插入目录,可以按照以下步骤进行: 1. 首先,在pom.xml文件中添加POI-TL的依赖: ``` <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-tl</artifactId> <version>1.0.5</version> </dependency> ``` 2. 创建一个空白的Word文档: ``` XWPFTemplate template = XWPFTemplate.create(new File("template.docx")); ``` 3. 在需要插入目录的位置插入一个标记,例如“{toc}”: ``` template.replaceTag("{toc}", ""); ``` 4. 在文档的末尾插入一个空白段落: ``` template.doc.createParagraph(); ``` 5. 使用POI-TL提供的方法生成目录: ``` CTSdtContent content = CTSdtContent.Factory.newInstance(); XWPFParagraph paragraph = template.doc.createParagraph(); CTP ctp = paragraph.getCTP(); ctp.setDomNode(content.newDomNode()); content.addNewSdtPr().addNewDocPartObj().addNewDocPartGallery().setVal("Table of contents"); content.addNewSdtEndPr(); CTBookmark bookmark = ctp.addNewBookmarkStart(); bookmark.setName("_Toc521216412"); bookmark.setId(BigInteger.valueOf(521216412)); CTMarkupRange range = ctp.addNewR().addNewFldChar().setFldCharType(STFldCharType.BEGIN); range = ctp.addNewR().addNewInstrText(); range.setStringValue(" TOC \\o \"1-3\" \\h \\z \\u "); range = ctp.addNewR().addNewFldChar().setFldCharType(STFldCharType.SEPARATE); range = ctp.addNewR().addNewFldChar().setFldCharType(STFldCharType.END); bookmark = ctp.addNewBookmarkEnd(); bookmark.setId(BigInteger.valueOf(521216412)); ``` 6. 保存文档并关闭: ``` template.write(new FileOutputStream(new File("output.docx"))); template.close(); ``` 以上是POI-TL实现插入目录的代码,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值