`

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

阅读更多

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程序。参考如下导入效果:

 

方法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("bookmark2"));//通过书签名删除
        doc.getBookmarks().removeAt(1);//通过索引值删除

        //保存文档
        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();
    }
}

 

书签读取结果:



 

(本文完)

 

 

  • 大小: 37.7 KB
  • 大小: 121.8 KB
  • 大小: 125.4 KB
  • 大小: 199.2 KB
0
0
分享到:
评论

相关推荐

    java操作word可操作书签

    Java 操作 Word 文档,尤其是处理书签,是一种常见的需求,尤其在自动化报告生成或文档模板填充场景中。本文将详细介绍如何使用 Java 实现这一功能,避免依赖第三方库,如 Apache POI、java2word 或 jcob。 首先,...

    java操作word书签

    java操作word 实现了三个功能:模板填充,模板数据提取,格式颜色验证,具体解压jar包WordTest实例,注意针对word2007以上,书签要对应

    java操作word(包含书签插值)

    Java作为一种广泛使用的编程语言,提供了多种库来操作Word文档,实现自动化填充模板,例如书签插值,这在合同制作中非常有用。本文将详细讲解如何使用Java操作Word,特别是针对书签插值的方法,以及相关的技术和工具...

    Java通过word模板配置书签生成word

    "Java通过word模板配置书签生成word"是一个技术方案,它利用了Java的API来处理Microsoft Word文档,特别是Apache POI库,这是一种强大的工具,允许开发者在Java程序中创建、修改和展示MS Office格式的文件。...

    利用poi+word模版书签,向word中插入数据

    在IT行业中,尤其是在文档自动化处理领域,Apache POI是一个非常重要的工具,它允许开发者使用Java来操作Microsoft Office格式的文件,如Word、Excel和PowerPoint。本教程将深入讲解如何利用Apache POI的XWPF模块...

    java操作word可操作书签实用.pdf

    Java 操作 Word 可操作书签实用 标题:Java 操作 Word 可操作书签实用 从给定的文件信息中,我们可以了解到作者想要在 Word 文档中设置书签,然后从数据库中查询数据,填充到 Word 文档书签位置。作者曾经尝试使用...

    DocX类操作WORD文档——把图片插入到书签指定位置

    在Word文档中,书签是一个可以用来标记特定位置的对象,方便后续的操作。我们可以使用DocX的`Document.Bookmarks`属性来访问文档中的所有书签,然后根据书签的名字找到目标书签。 以下是使用DocX库插入图片的基本...

    java操作word可操作书签.pdf

    Java 操作 Word 可操作书签 本文主要讲述如何使用 Java 操作 Word 文档中的书签,并将数据库中的数据填充到 Word 文档书签位置。首先,我们需要了解 Word 文档的结构,Word 2007 版本其实就是 ZIP 格式,将新建 ...

    用jacob操作word书签

    4. **执行具体操作**:包括但不限于读取/修改文档内容、添加/删除书签等。 5. **关闭文档和Word应用程序**:确保在完成所有操作后正确关闭文档及Word应用程序。 #### 三、删除Word中的书签 在Java中,使用Jacob删除...

    java实现xml解析word文档代码实现

    Java2Word 库可以实现 Word 文档的解析和操作,但是需要额外的 DLL 文件,这在 Linux 服务器上可能不是一个好的选择。 2. Word 文档的 XML 结构 Word 文档实际上是一个 ZIP 文件,其中包含了多个文件夹和文件,...

    java2word 文档

    Java2Word 是一个Java库,用于将数据转换为Microsoft Word文档。这个库主要利用Jacob组件,这是一个Java-COM Bridge,允许Java程序与Windows平台上的COM(Component Object Model)组件进行交互,尤其是处理...

    aspose.word 解析word读取及word转pdf、转html

    3. 操作文档元素:Aspose.Word允许你在读取的同时修改文档内容,如替换文本、调整样式、添加或删除元素等。 4. 错误处理:在读取过程中,Aspose.Word会处理可能的格式错误或损坏,提供详细的异常信息以便调试。 **...

    实现java对word文档的操作

    该组件提供了一组简单的接口,以便java程序调用他的服务操作Word 文档。 这些服务包括: 打开文档、新建文档、 查找文字、替换文字, 插入文字、插入图片、插入表格, 在书签处插入文字、插入图片、插入表格等。 ...

    java 操作word文档

    #### 一、Java操作Word文档概述 在现代办公环境中,Word文档是最常用的文档格式之一。由于其广泛的应用场景,很多时候我们需要通过编程的方式对Word文档进行读写操作。Java作为一种强大的编程语言,提供了多种库来...

    Java利用poi对word插入文字图片

    在Java编程领域,Apache POI库是一个非常实用的工具,它允许开发者读写Microsoft Office格式的文件,如Word、Excel和PowerPoint。本项目“Java利用poi对word插入文字图片”是一个具体的示例,旨在教给你如何使用...

    J2W-master.zipJ2W Java 使用 POI 3.17根据Word 模板替换、操作书签

    在“J2W-master”中,Java程序会读取一个预先设计好的Word模板,这个模板可能包含了占位符或者书签。这些占位符和书签是预设的标记,用于数据替换。例如,你可能有一个模板文档,其中包含“{name}”和“{age}”这样...

    java实现word表格指定位置盖章,并且设置印章悬浮于文字之上

    在Java编程环境中,实现Word文档中的表格指定位置盖章,并让印章悬浮于文字之上,是一项技术挑战,但可以通过一些库和技巧来实现。这个过程主要涉及到对Word文档内容的读取、修改以及重新保存,同时要确保印章图像不...

    使用poi将word读取后替换指定内容后再次生成新word

    使用poi将word读取后替换指定内容后再次生成新word,本人经过测试,拿来即用!

    POI读取word文档的文字内容和图片内容

    总之,Apache POI为Java开发者提供了一个强大的工具,使他们能够在没有Microsoft Office的情况下,方便地读取和操作Word文档的内容。通过理解Word文档的内部结构和POI库的API,你可以构建出高效的文件处理程序。

    java根据word模板导出Word文件,插入图片表格都可以

    网络上的根据模板填充Word我都看过一些, 它们的功能在数据换行的时候用的是run对象的.addCarriageReturn()方法,或者是直接用\n...换行的word导致另一个程序读取的时候整个段落全部读取,而分段则会一段一段的读取。

Global site tag (gtag.js) - Google Analytics