本文将使用Free Spire.Doc for Java免费控件来演示如何替换Word文档中添加有书签的文本段落。具体内容如下:
- 用文本替换书签内容
- 用表格替换书签内容
在运行代码前,需将jar包导入IDEA。可通过下载产品包手动导入或在Maven下的pom.xml文件中添加如下引用。
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>http://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.doc.free</artifactId>
<version>3.9.0</version>
</dependency>
</dependencies>
示例1 用文本替换书签内容
import com.spire.doc.*;
import com.spire.doc.documents.*;
public class ReplaceWithText {
public static void main(String[] args) {
//加载Word文档
Document doc = new Document("C:\\Users\\Test1\\Desktop\\Sample.docx");
//定位到书签"MyBookmark"
BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(doc);
bookmarkNavigator.moveToBookmark("MyBookmark");
//使用文本替换原书签的内容, false表示不保留原来的格式
bookmarkNavigator.replaceBookmarkContent("使用文本替换书签内容", false);
//保存文档
doc.saveToFile("output/ReplaceWithText.docx", FileFormat.Docx);
}
}
或使用Html String替换书签内容
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.ParagraphBase;
public class ReplaceWithHTMLString {
public static void main(String[] args) {
//加载Word文档
Document doc = new Document("C:\\Users\\Test1\\Desktop\\Sample.docx");
//临时添加一个section
Section tempSection = doc.addSection();
//添加段落到section并添加Html string到段落
String html = "使用文本替换书签内容";
tempSection.addParagraph().appendHTML(html);
//获取段落的第一项和最后一项
ParagraphBase firstItem = (ParagraphBase)tempSection.getParagraphs().get(0).getItems().getFirstItem();
ParagraphBase lastItem = (ParagraphBase)tempSection.getParagraphs().get(0).getItems().getLastItem();
//创建TextBodySelection对象
TextBodySelection selection = new TextBodySelection(firstItem, lastItem);
//创建TextBodyPart对象
TextBodyPart bodyPart = new TextBodyPart(selection);
//定位到书签"MyBookmark"
BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(doc);
bookmarkNavigator.moveToBookmark("MyBookmark");
//使用Html string替换原书签的内容
bookmarkNavigator.replaceBookmarkContent(bodyPart);
//移除临时添加的section
doc.getSections().remove(tempSection);
//保存结果文档
doc.saveToFile("output/ReplaceWithHTMLString.docx", FileFormat.Docx);
}
}
替换前后对比:
示例2 用表格替换书签内容
import com.spire.doc.*;
import com.spire.doc.documents.*;
public class ReplaceWithTable {
public static void main(String[] args) {
//加载Word文档
Document doc = new Document("C:\\Users\\Test1\\Desktop\\Sample.docx");
String[][] data =
{
new String[]{"名称", "额定容量", "电源", "工作时间"},
new String[]{"LED-901充电式手电筒", "900mAH", "AC110V/220V", "26个小时"},
};
//创建表格
Table table = new Table(doc, true);
table.resetCells(2, 4);
for (int i = 0; i < data.length; i++) {
TableRow dataRow = table.getRows().get(i);
for (int j = 0; j < data[i].length; j++) {
dataRow.getCells().get(j).addParagraph().appendText(data[i][j]);
}
}
//创建TextBodyPart对象
TextBodyPart bodyPart= new TextBodyPart(doc);
bodyPart.getBodyItems().add(table);
//定位到书签"MyBookmark"
BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(doc);
bookmarkNavigator.moveToBookmark("MyBookmark");
//使用表格替换原书签的内容
bookmarkNavigator.replaceBookmarkContent(bodyPart);
//保存文档
doc.saveToFile("output/ReplaceWithTable.docx", FileFormat.Docx);
}
}
替换效果:
推荐阅读: