JAVA 替换、复制和移除Word书签内容

2025-10-19 19:50:43

1、首先,获取jar包。

Step 1: 下载控件包之后解压,打开“Project Structure”界面。(以下是两种在IDEA中快速打开Project Structure界面的方式:①file->Project Structure ②Shift+Ctrl+Alt+S快捷键进入‘Project Structure’。可选其中任意一种)

2、Step 2:按以下操作步骤进行导入。① 选择“Modules”—“Dependencies”,添加外置jar包;② 进入"Attach File or Directories"界面选择jar文件路径,然后点击“OK”;③ 勾选jar路径选项,点击”Apply”/”OK”;④ 导入完成。如下图:

JAVA 替换、复制和移除Word书签内容

JAVA 替换、复制和移除Word书签内容

3、测试文档:

JAVA 替换、复制和移除Word书签内容

1、替换书签内容

 

    BookmarkNavigator类用于导航到书签,通过它的moveToBookmark()方法和replaceBookmarkContent()方法可以定位和替换指定书签的内容。

import com.spire.doc.*;

import com.spire.doc.documents.BookmarksNavigator;

public class replaceBookmarkContent {

    public static void main(String[] args) {

        String input = "data/Sample1.docx";

        String output = "output/replaceBookmarkContent.docx";

        //从硬盘中加载文件

        Document doc = new Document();

        doc.loadFromFile(input);

        //定位书签

        BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(doc);

        bookmarkNavigator.moveToBookmark("我的书签");

        //用新的内容替换上下文

        bookmarkNavigator.replaceBookmarkContent("这部分内容已经被替换。这部分内容已经被替换。这部分内容已经被替换。这部分内容已经被替换。",false);

        //保存文件

        doc.saveToFile(output, FileFormat.Docx);

    }

}

2、替换结果:

JAVA 替换、复制和移除Word书签内容

3、复制书签内容

 

import com.spire.doc.*;

import com.spire.doc.documents.*;

public class copyBookmarkContent {

    public static void main(String[] args) {

        String input = "data/Sample1.docx";

        String output = "output/copyBookmarkContent.docx";

        //从硬盘上加载文件

        Document doc = new Document();

        doc.loadFromFile(input);

        //获取书签名

        Bookmark bookmark = doc.getBookmarks().get("我的书签");

        DocumentObject docObj = null;

        If (((Paragraph) bookmark.getBookmarkStart().getOwner()).isInCell()) {

            docObj = bookmark.getBookmarkStart().getOwner().getOwner().getOwner().getOwner();

        } else {

            docObj = bookmark.getBookmarkStart().getOwner();

        }

        int startIndex = doc.getSections().get(0).getBody().getChildObjects().indexOf(docObj);

        if (((Paragraph) bookmark.getBookmarkEnd().getOwner()).isInCell()) {

            docObj = bookmark.getBookmarkEnd().getOwner().getOwner().getOwner().getOwner();

        } else {

            docObj = bookmark.getBookmarkEnd().getOwner();

        }

        int endIndex = doc.getSections().get(0).getBody().getChildObjects().indexOf(docObj);

        //获取这个段落中的书签对象的start和end索引

        Paragraph para = (Paragraph) bookmark.getBookmarkStart().getOwner();

        int pStartIndex = para.getChildObjects().indexOf(bookmark.getBookmarkStart());

        para = (Paragraph) bookmark.getBookmarkEnd().getOwner();

        int pEndIndex = para.getChildObjects().indexOf(bookmark.getBookmarkEnd());

        //获取当前书签的内容并复制

        TextBodySelection select = new TextBodySelection(doc.getSections().get(0).getBody(), startIndex, endIndex, pStartIndex, pEndIndex);

        TextBodyPart body = new TextBodyPart(select);

        for (int i = 0; i < body.getBodyItems().getCount(); i++) {

            doc.getSections().get(0).getBody().getChildObjects().add(body.getBodyItems().get(i).deepClone());

        }

        //保存文件

        doc.saveToFile(output, FileFormat.Docx);

    }

}

4、复制结果:

JAVA 替换、复制和移除Word书签内容

5、移除书签内容

 

import com.spire.doc.*;

import com.spire.doc.documents.Paragraph;

public class removeBookmarkContent {

    public static void main(String[] args) {

        String input = "data/Sample1.docx";

        String output = "output/removeBookmarkContent.docx";

        //从硬盘中加载文件

        Document document = new Document();

        document.loadFromFile(input);

        //获取书签名

        Bookmark bookmark = document.getBookmarks().get("我的书签");

        Paragraph para = (Paragraph) bookmark.getBookmarkStart().getOwner();

        int startIndex = para.getChildObjects().indexOf(bookmark.getBookmarkStart());

        para = (Paragraph) bookmark.getBookmarkEnd().getOwner();

        int endIndex = para.getChildObjects().indexOf(bookmark.getBookmarkEnd());

        //移除内容,从getBookmarkStart对象开始,到getBookmarkEnd对象结束

        for (int i = startIndex + 1; i < endIndex; i++) {

            para.getChildObjects().removeAt(startIndex + 1);

        }

        //保存文件

        document.saveToFile(output, FileFormat.Docx);

    }

}

 

6、移除结果:

JAVA 替换、复制和移除Word书签内容

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢