JAVA 替换、复制和移除Word书签内容
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、测试文档:
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、移除结果: