欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java 操作Word书签(一):添加、删除、读取书签

程序员文章站 2022-04-09 15:35:01
Word中,书签功能常用于查找、定位、标记特定字符或段落,对于篇幅较大的文档,此功能非常实用。下面,将介绍通过Java程序来添加及删除Word书签的方法。示例要点包括: 1. 添加书签 1.1 给指定段落添加书签 1.2 给指定字符串添加书签 2. 删除书签 2.1删除书签 2.2 删除书签文本 3 ......

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

1. 添加书签

   1.1 给指定段落添加书签

   1.2 给指定字符串添加书签

2. 删除书签

   2.1删除书签

   2.2 删除书签文本

3. 读取书签文本

使用工具:free spire.doc for java (免费版)

jar文件获取及导入:

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

Java 操作Word书签(一):添加、删除、读取书签

方法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();
    }
}

书签添加效果:

Java 操作Word书签(一):添加、删除、读取书签

 

【示例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();
    }
}

书签添加效果:

Java 操作Word书签(一):添加、删除、读取书签

 

【示例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();
    }
}

书签读取结果:

Java 操作Word书签(一):添加、删除、读取书签

 

(本文完)