使用 POI 读取 Word 中的书签、替换书签内容(doc和docx)

您所在的位置:网站首页 如何删除书签app 使用 POI 读取 Word 中的书签、替换书签内容(doc和docx)

使用 POI 读取 Word 中的书签、替换书签内容(doc和docx)

2023-08-06 23:55| 来源: 网络整理| 查看: 265

使用 POI 读取 Word 中的书签、替换书签内容(doc和docx) 原创

catoop 2022-04-18 11:53:59 博主文章分类:Java开发 ©著作权

文章标签 POI apache java xml 其它 文章分类 代码人生

©著作权归作者所有:来自51CTO博客作者catoop的原创作品,请联系作者获取转载授权,否则将追究法律责任

通过操作书签可以实现 word 模板替换变量的功能场景,本文一下代码内容,直接可以复制使用正常编译运行。

添加 maven 依赖 org.apache.poi poi-ooxml 5.2.2 org.apache.poi poi-examples 5.2.2 org.apache.poi poi-scratchpad 5.2.2 操作书签的代码 package org.example; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.usermodel.Bookmark; import org.apache.poi.hwpf.usermodel.Bookmarks; import org.apache.poi.hwpf.usermodel.Range; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; import org.w3c.dom.Node; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.Paths; import java.util.HashMap; import java.util.List; import java.util.Map; public class BookmarkDemo { /** * 因为docx为xml格式的结构,一下为docx中定义的部分常量引用 **/ public static final String RUN_NODE_NAME = "w:r"; public static final String TEXT_NODE_NAME = "w:t"; public static final String BOOKMARK_START_TAG = "w:bookmarkStart"; public static final String BOOKMARK_END_TAG = "w:bookmarkEnd"; public static final String BOOKMARK_ID_ATTR_NAME = "w:id"; public static final String STYLE_NODE_NAME = "w:rPr"; public static void main(String[] args) throws IOException { // 读取 doc 文件中的所有书签 InputStream inputStream = Files.newInputStream(Paths.get("D:\\Desktop\\Welcome2.doc")); getBookmarksByDoc(inputStream); // 读取 doc 文件中的所有书签 InputStream inputStream2 = Files.newInputStream(Paths.get("D:\\Desktop\\Welcome.docx")); getBookmarksByDocx(inputStream2); // 替换文件中的 bookmark 内容 InputStream inputStream3 = Files.newInputStream(Paths.get("D:\\Desktop\\Welcome.docx")); Map dataMap = new HashMap(); dataMap.put("strong", "单红宇"); dataMap.put("footnotes", "李小雨"); replaceBookmarksByDocx(inputStream3, Files.newOutputStream(Paths.get("D:\\Desktop\\Welcome3.docx")), dataMap); } /** * 读取 doc 文件中的所有书签 * * @param inputStream * @throws IOException */ public static void getBookmarksByDoc(InputStream inputStream) throws IOException { HWPFDocument wordDoc = new HWPFDocument(inputStream); Bookmarks bookmarks = wordDoc.getBookmarks(); for (int b = 0; b 收藏 评论 分享 举报

上一篇:pandoc转pdf文件使用latex模板介绍(Linux环境)

下一篇:Rancher 使用 NFS Storage Classes 进行动态 NFS 存储



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3