Java - How to Replace Text in Word Documents
Tags: java, word, replace, text
Published: 2022-05-11 09:18:55

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](https://www.e-iceblue.com/Introduce/free-doc-for-java.html) library. It covers the following topics:

- [Replace Text in Document](https://dev.to/alexis92/java-how-to-replace-text-in-word-documents-5fpn#replace-text-in-document)
- [Replace Text in Table](https://dev.to/alexis92/java-how-to-replace-text-in-word-documents-5fpn#replace-text-in-table)
- [Replace Text with Image](https://dev.to/alexis92/java-how-to-replace-text-in-word-documents-5fpn#replace-text-with-image)
- [Replace Text using Regular Expression (RegEx)](https://dev.to/alexis92/java-how-to-replace-text-in-word-documents-5fpn#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.
```java
<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](https://www.e-iceblue.com/Download/doc-for-java-free.html), 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:
```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 a Word document using Java](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v7nliq0rby2gn9341y7z.png) 

## 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:
```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 in table in Word using Java](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qcuvicp05n1ewa1krloh.png) 

## 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:
```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 with image in Word using Java](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kmi15dr8mwuyzqai05mn.png) 

## 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:
```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);
    }
}
```

![Replace text by regex in Word using Java](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b2w85uxp13rgfhmbuvce.png) 

## 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.