多语言展示
当前在线:759今日阅读:60今日分享:30

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

在Word中添加书签有助于我们下次更加方便的浏览文档,通过书签可以很方便地修改、复制或移除Word的内容。本篇经验将介绍在Java中替换、复制和移除Word书签内容。
工具/原料
1

 Free Spire.Doc for Java 2.0.0(免费版)

2

 Intellij IDEA

Jar包文件导入:
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代码参考示例
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

替换结果:

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

复制结果:

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

移除结果:

推荐信息