Free Spire.Doc for Java 2.0.0(免费版)
Intellij IDEA
首先,获取jar包。Step 1: 下载控件包之后解压,打开“Project Structure”界面。(以下是两种在IDEA中快速打开Project Structure界面的方式:①file->Project Structure ②Shift+Ctrl+Alt+S快捷键进入‘Project Structure’。可选其中任意一种)
Step 2:按以下操作步骤进行导入。① 选择“Modules”—“Dependencies”,添加外置jar包;② 进入'Attach File or Directories'界面选择jar文件路径,然后点击“OK”;③ 勾选jar路径选项,点击”Apply”/”OK”;④ 导入完成。如下图:
替换书签内容 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); }}
替换结果:
复制书签内容 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); }}
复制结果:
移除书签内容 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); }}
移除结果: