`
高级java工程师
  • 浏览: 411735 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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
分享到:
评论

相关推荐

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

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

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

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

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

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

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

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

    word测试替换书签模板

    标题“word测试替换书签模板”涉及到的是在Java编程环境下,如何操作Microsoft Word 97-2003版本的文档模板,特别是针对书签内容的替换。书签是Word中的一个功能,允许用户在文档中设置特定位置的标记,方便后续对...

    poi读写word模板/JAVA生成word包

    在Java开发中,Apache POI 是一个非常重要的库,它允许开发者处理Microsoft Office格式的文件,包括Word(.doc和.docx)、Excel(.xls和.xlsx)和PowerPoint(.ppt和.pptx)。本教程将专注于使用Apache POI进行Word...

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

    DocX是一个轻量级、易于使用的库,它允许开发者在不依赖Microsoft Word的情况下,对DOCX格式的Word文档进行读写操作。本文将详细讲解如何使用DocX库将图片插入到Word文档中书签指定的位置。 首先,我们需要了解DocX...

    使用POI读写Word文件(兼容doc与docx版本)

    Apache POI 是一个流行的Java库,它允许开发者创建、修改和显示Microsoft Office格式的文件,包括Word(.doc 和 .docx)。本篇文章将详细介绍如何使用POI来读写Word文件,兼容doc与docx版本。 首先,我们需要理解....

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

    - Apache POI:这是一个流行的开源Java API,用于读写Microsoft Office格式的文件,包括Word(.docx)文档。它是实现此功能的核心工具。 2. **读取Word文档**: - 使用Apache POI的`XWPFDocument`类加载.docx文件...

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

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

    word中指定内容进行填充

    Apache POI是一个流行的选择,它是一个用于读写Microsoft Office格式文件的Java API。Apache POI提供了一套完整的API,可以让我们在Java程序中操作Word(.doc/.docx)文档。 1. **Apache POI基础**: - `...

    POI操作Word中插入文本和图片

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。在本文中,我们将深入探讨如何使用Apache POI在Word文档中插入文本和图片,这对于创建动态报告模板尤其有用。 ...

    java 操作word文档

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

    使用poi替换word中的文字和图片实现打印

    在IT行业中,Apache POI是一个流行的Java库,用于读写Microsoft Office格式的文件,包括Word(.doc/.docx)、Excel(.xls/.xlsx)和PowerPoint(.ppt/.pptx)。本示例将深入探讨如何使用Apache POI库来替换Word文档...

    富文本html转word,word文件合并.zip

    Apache POI是一个流行的API,用于读写Microsoft Office格式的文件,包括Word(.doc和.docx)。通过解析HTML并利用POI创建Word文档,我们可以将HTML中的样式、图片和文本准确地转换到Word中。这涉及到DOM解析、CSS...

    itext操作word生成目录、页码、表格、插入图片

    Apache POI是Java平台上的一个开源项目,它提供了对Microsoft Office格式文件的读写支持。 1. **生成目录**: 在Word中,目录通常是基于标题的样式自动创建的。在iText和Apache POI的组合中,你需要先用POI设置好...

    java Apache poi 对word doc文件进行读写操作

    Apache POI 是一个流行的 Java 库,它允许开发者读取、写入和修改 Microsoft Office 文件格式,包括 Word 的 .doc 文件。在 Java 开发中,如果你需要处理 Word 文档,Apache POI 提供了强大的工具。本篇文章将详细...

    通过poi生成word.rar

    Apache POI 是Java平台上的一个库,它允许开发者读写Microsoft Office格式的文件。这个库包括了HSSF(用于处理旧版的Excel .xls文件)和XSSF(用于处理较新的Excel .xlsx文件)。此外,还有HWPF(用于处理Word .doc...

    poi解析excel、word2007,2010等版本

    Apache POI 是一款开源的Java库,专门用于处理Microsoft Office格式的文件,包括Excel、Word、PowerPoint等。本项目中的"poiTest"是一个Web应用示例,它演示了如何使用Apache POI来解析不同版本的Excel(如2007、...

    doc2docx 文件类型转换 java后台

    在描述中提到的“java代码编写”,暗示了我们可能会用到Apache POI库,这是一个用于读写Microsoft Office格式文件的开源Java API。Apache POI提供了HPSF(Hierarchical Property Set Format)和HWPF(Horrible Word ...

Global site tag (gtag.js) - Google Analytics