博客
关于我
Java 操作Word书签(一):添加、删除、读取书签
阅读量:415 次
发布时间:2019-03-06

本文共 4195 字,大约阅读时间需要 13 分钟。

Word中,书签功能常用于查找、定位、标记特定字符或段落,对于篇幅较大的文档,此功能非常实用。下面,将介绍通过Java程序来添加及删除Word书签的方法。示例要点包括:

1. 添加书签

   1.1 给指定段落添加书签

   1.2 给指定字符串添加书签

2. 删除书签

   2.1删除书签

   2.2 删除书签文本

3. 读取书签文本

使用工具:Free Spire.Doc for Java (免费版)

Jar文件获取及导入:

方法1 通过官网文件包。下载后,解压文件。并将lib文件夹下的Spire.Doc.jar文件导入到java程序。参考如下导入效果:

方法2可通过maven仓库。可参考安装

 

Java 代码示例

【示例1】给指定段落添加书签

import com.spire.doc.*;import com.spire.doc.documents.Paragraph;public class AppendBookmark {    public static void main(String[]args){        //加载需要添加书签的Word文档        Document doc = new Document();        doc.loadFromFile("sample.docx");        //获取需要添加书签的段落        Paragraph para = doc.getSections().get(0).getParagraphs().get(1);        //在段落起始、末尾添加书签的开始标签和结束标签,并命名书签        BookmarkStart start = para.appendBookmarkStart("bookmark01");        para.getItems().insert(0,start);        para.appendBookmarkEnd("bookmark01");        //保存文档        doc.saveToFile("appendbookmark.docx",FileFormat.Docx_2013);        doc.dispose();    }}

书签添加效果:

 

【示例2】给指定字符串添加书签

import com.spire.doc.*;import com.spire.doc.documents.Paragraph;import com.spire.doc.documents.TextSelection;import com.spire.doc.fields.TextRange;public class AppendBookmarkToCharacter {    public static void main(String[]args){        //加载文档        Document doc = new Document();        doc.loadFromFile("sample.docx");        //查找指定字符串        TextSelection textSelection = doc.findString("采用蕴含深意的象征语言,揭示人生的哲理。",false,false);        TextRange range = textSelection.getAsOneRange();        Paragraph para = range.getOwnerParagraph();        int index = para.getChildObjects().indexOf(range);        //添加书签        BookmarkStart start = new BookmarkStart(doc,"书签1");        BookmarkEnd end = new BookmarkEnd(doc, "书签1");        para.getChildObjects().insert(index, start);        para.getChildObjects().insert(index + 2, end);        //保存文档        doc.saveToFile("appendbookmarktocharacter.docx",FileFormat.Docx_2013);        doc.dispose();    }}

书签添加效果:

 

【示例3】删除书签、书签文本

 

import com.spire.doc.*;import com.spire.doc.documents.BookmarksNavigator;public class DeleteBookmarkAndBookmarkcontent {    public static void main(String[]args){        //加载文档        Document doc = new Document();        doc.loadFromFile("test.docx");        //定位到特定的书签        BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(doc);        bookmarksNavigator.moveToBookmark("bookmark1");        //删除书签处的内容        bookmarksNavigator.deleteBookmarkContent(true);        //删除书签(仅删除书签标签,原文书签处的内容)        doc.getBookmarks().remove(doc.getBookmarks().get("bookmark1"));//通过书签名删除        doc.getBookmarks().removeAt(0);//通过索引值删除        //保存文档        doc.saveToFile("deletebookmark.docx",FileFormat.Docx_2013);    }}

【示例4】读取书签文本

 

import com.spire.doc.*;import com.spire.doc.documents.BookmarksNavigator;import com.spire.doc.documents.Paragraph;import com.spire.doc.documents.TextBodyPart;import com.spire.doc.fields.TextRange;import java.io.IOException;import java.io.PrintWriter;public class GetBookmarkText {    public static void main(String[]args) throws IOException {        //加载包含书签的Word文档        Document doc = new Document();        doc.loadFromFile("test.docx");        //获取书签        BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(doc);        bookmarksNavigator.moveToBookmark("bookmark1");        //获取书签文本        TextBodyPart textBodyPart = bookmarksNavigator.getBookmarkContent();        //创建String变量        String text = "";        //遍历书签内容的项目        for (Object item : textBodyPart.getBodyItems()) {            //判断项目是否为段落            if (item instanceof Paragraph) {                Paragraph paragraph = (Paragraph) item;                //遍历段落中的子对象                for (Object childObj : paragraph.getChildObjects()) {                    //判断子对象是否为TextRange                    if (childObj instanceof TextRange) {                        //获取TextRange中的文本                        TextRange textRange = (TextRange) childObj;                        text = text + textRange.getText();                    }                }            }        }        //将获取到的文本写入Txt文件        PrintWriter printWriter = new PrintWriter("BookmarkText.txt");        printWriter.println(text);        printWriter.close();    }}

书签读取结果:

 

(本文完)

 

转载地址:http://hunkz.baihongyu.com/

你可能感兴趣的文章
Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime(72)
查看>>
Node 裁切图片的方法
查看>>
node+express+mysql 实现登陆注册
查看>>
Node+Express连接mysql实现增删改查
查看>>
node, nvm, npm,pnpm,以前简单的前端环境为什么越来越复杂
查看>>
Node-RED中Button按钮组件和TextInput文字输入组件的使用
查看>>
vue3+Ts 项目打包时报错 ‘reactive‘is declared but its value is never read.及解决方法
查看>>
Node-RED中Switch开关和Dropdown选择组件的使用
查看>>
Node-RED中使用exec节点实现调用外部exe程序
查看>>
Node-RED中使用function函式节点实现数值计算(相加计算)
查看>>
Node-RED中使用html节点爬取HTML网页资料之爬取Node-RED的最新版本
查看>>
Node-RED中使用JSON数据建立web网站
查看>>
Node-RED中使用json节点解析JSON数据
查看>>
Node-RED中使用node-random节点来实现随机数在折线图中显示
查看>>
Node-RED中使用node-red-browser-utils节点实现选择Windows操作系统中的文件并实现图片预览
查看>>
Node-RED中使用node-red-contrib-image-output节点实现图片预览
查看>>
Node-RED中使用node-red-node-ui-iframe节点实现内嵌iframe访问其他网站的效果
查看>>
Node-RED中使用Notification元件显示警告讯息框(温度过高提示)
查看>>
Node-RED中使用range范围节点实现从一个范围对应至另一个范围
查看>>
Node-RED中实现HTML表单提交和获取提交的内容
查看>>