In certain cases, you may need to replace text in a Word document. For instance, you misspelled someone’s name multiple times throughout your document and need to update it to the correct one; or you need to generate Word documents from a template by replacing placeholder text. To automate this operation, this article will explain how to replace text in Word documents in Java using Free Spire.Doc for Java library. It covers the following topics:
- Replace Text in Document
- Replace Text in Table
- Replace Text with Image
- Replace Text using Regular Expression (RegEx)
Add Dependencies
Method 1: If you are using maven, you can easily import the JAR file in your application by adding the following code to your project's pom.xml file.
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.doc.free</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies>
Method 2: If you are not using maven, you can download the JAR file from this link, extract the zip file and then import the Spire.Doc.jar file under the lib folder into your project as a dependency.
Replace Text in Document
Free Spire.Doc for Java provides a Document class which represents a Word document. This class exposes a replace method which enables developers to replace a certain text within the document.
The following code example explains how to replace text in a Word document using Java:
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
public class ReplaceTextInDocument {
public static void main(String []args){
//Load a Word document
Document document = new Document("Input.docx");
// Replace a specific text
document.replace("Java", "Replace", false, true);
//Save the result document
document.saveToFile("ReplaceTextInDocument.docx", FileFormat.Docx);
}
}
Replace Text in Table
The above example replaces all occurrences of a text within the whole document. If you only want to replace text within a specific table, you can use the replace method of Table class to implement this task.
The following code example explains how to replace text in a table in a Word document using Java:
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.Section;
import com.spire.doc.Table;
import java.util.HashMap;
import java.util.Map;
public class ReplaceTextInTable {
public static void main(String []args){
//Load a Word document
Document document = new Document("Table.docx");
//Get the first section
Section section = document.getSections().get(0);
//Get the first table in the section
Table table = section.getTables().get(0);
//Create a map of values
Map<String, String> map = new HashMap();
map.put("$name","Alex Brian");
map.put("$age","28");
map.put("$gender","Male");
map.put("$phone","(555)85430000");
map.put("$address","Brooklyn, NY 11201");
map.put("$email","alex.brian@email.com");
//Replace text in the table
for (Map.Entry<String, String> entry : map.entrySet()) {
table.replace(entry.getKey(), entry.getValue(), false, true);
}
//Save the result document
document.saveToFile("ReplaceTextInTable.docx", FileFormat.Docx_2013);
}
}
Replace Text with Image
Actually, Free Spire.Doc for Java doesn’t provide a direct method to replace text with image. You can achieve this feature by finding the index position of the text, inserting an image to the position, and then removing the text from the document.
The following code example explains how to replace text with image in a Word document using Java:
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.documents.TextSelection;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.fields.TextRange;
public class ReplaceTextWithImage {
public static void main(String []args){
//Load a Word document
Document document = new Document("ReplaceTextInTable.docx");
//Search for text
TextSelection textSelection = document.findString("$photo", false, true);
//Load an image
DocPicture pic = new DocPicture(document);
pic.loadImage("photo.png");
//Get the index position of the text
TextRange range = textSelection.getAsOneRange();
int index = range.getOwnerParagraph().getChildObjects().indexOf(range);
//Insert the image to the position
range.getOwnerParagraph().getChildObjects().insert(index,pic);
//Remove the text
range.getOwnerParagraph().getChildObjects().remove(range);
//Save the result document
document.saveToFile("ReplaceTextWithImage.docx", FileFormat.Docx_2013);
}
}
Replace Text using Regular Expression (RegEx)
A regular expression is a pattern that the regular expression engine attempts to match in input text. It provides a powerful, flexible, and efficient method for processing text.
The following code example explains how to replace text by regular expression in Word using Java:
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import java.util.regex.Pattern;
public class ReplaceTextByRegEx {
public static void main(String []args){
//Create word document
Document doc = new Document();
// Load the document from disk.
doc.loadFromFile("Regex.docx");
//Create a RegEx to replace text starting with #
Pattern regex=Pattern.compile("\\#\\w+\\b");
//Replace text by the regex
doc.replace(regex,"KeyBoard");
//Save the result document
doc.saveToFile("ReplaceTextByRegex.docx", FileFormat.Docx_2013);
}
}
Conclusion
This article introduced several scenarios to replace text in a Word document. Apart from the explained scenarios, you can also use Free Spire.Doc for Java library to replace text with a Word document, replace text with HTML, replace text with table etc., but I'm ending the article here to keep it within limits. If you are interested, you can try it by yourself.
Top comments (0)