本篇文章將繼續介紹通過Java來操作Word書簽的方法,即替換Word中已有書簽,包括用新的文本、圖片、表格等替換原有書簽處的內容。
使用工具:Free Spire.Doc for Java (免費版)
Jar文件獲取及導入:
方法1:通過官網下載jar文件包。下載后,解壓文件。並將lib文件夾下的Spire.Doc.jar文件導入到java程序。參考如下導入效果:

Java代碼示例
【示例1】用文本替換書簽
import com.spire.doc.*;
import com.spire.doc.documents.BookmarksNavigator;
public class ReplaceBookmarkContentWithNewContent {
public static void main(String[]args){
//加載包含書簽的Word文檔
Document doc = new Document();
doc.loadFromFile("test.docx");
//定位到指定書簽位置
BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(doc);
bookmarksNavigator.moveToBookmark("bookmark1");
//用文本內容替換原有書簽位置的文本,新替換的內容與原文格式一致
bookmarksNavigator.replaceBookmarkContent("新文本內容!",true);
//保存文檔
doc.saveToFile("replaceWithNewContent.docx",FileFormat.Docx_2013);
doc.dispose();
}
}
替換效果:

【示例2】用圖片替換書簽
import com.spire.doc.*;
import com.spire.doc.documents.BookmarksNavigator;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.TextBodyPart;
public class ReplaceBookmarkWithImg {
public static void main(String[]args){
//加載包含書簽的文檔
Document doc = new Document();
doc.loadFromFile("test.docx");
//定位到指定書簽位置
BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(doc);
bookmarksNavigator.moveToBookmark("bookmark1");
//添加圖片,替換原有書簽內容
Paragraph para= new Paragraph(doc);
para.appendPicture("eth.png");
TextBodyPart bodyPart = new TextBodyPart(doc);
bodyPart.getBodyItems().add(para);
bookmarksNavigator.replaceBookmarkContent(bodyPart);
//保存文檔
doc.saveToFile("replaceWithImg.docx",FileFormat.Docx_2013);
doc.dispose();
}
}
替換效果:

【示例3】用表格替換書簽
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.TextRange;
public class ReplaceBookmarkContentWithTable {
public static void main(String[]args){
//加載包含書簽的Word文檔
Document doc = new Document();
doc.loadFromFile("test.docx");
//聲明數組內容
String[][] data =
{
new String[]{"分類", "等級", "編號"},
new String[]{"A", "一級", "01A"},
new String[]{"B", "二級", "02B"},
new String[]{"C", "三級", "03C"},
};
//創建表格
Table table = new Table(doc, true);
table.resetCells(4, 3);
for (int i = 0; i < data.length; i++) {
TableRow dataRow = table.getRows().get(i);
for (int j = 0; j < data[i].length; j++) {
TextRange range = dataRow.getCells().get(j).addParagraph().appendText(data[i][j]);
range.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
range.getCharacterFormat().setFontName("楷體");
dataRow.getRowFormat().setHorizontalAlignment(RowAlignment.Center);
dataRow.getCells().get(j).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
}
}
//創建TextBodyPart對象
TextBodyPart bodyPart= new TextBodyPart(doc);
bodyPart.getBodyItems().add(table);
//定位到指定書簽位置
BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(doc);
bookmarkNavigator.moveToBookmark("bookmark1");
//使用表格替換原書簽的內容
bookmarkNavigator.replaceBookmarkContent(bodyPart);
//保存文檔
doc.saveToFile("replaceWithTable.docx", FileFormat.Docx);
doc.dispose();
}
}
替換效果:

轉自:Java 操作Word書簽(三):用文本、圖片、表格替換書簽 - E-iceblue - 博客園 (cnblogs.com)
