JAVA 替换、复制和移除Word书签内容
在Word中添加书签有助于我们下次更加方便的浏览文档,通过书签可以很方便地修改、复制或移除Word的内容。本篇经验将介绍在Java中替换、复制和移除Word书签内容。
工具/原料
Free Spire.Doc for Java 2.0.0(免费版)
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”;④ 导入完成。如下图:

3、测试文档:

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、复制结果:
