Mail Merge

Mail Merge (2)

Tuesday, 21 April 2020 09:46

How to Mail Merge Image in Word in Java

Written by support iceblue

This article demonstrates how to mail merge image in Word document in Java using Spire.Doc for Java.

The template document:

How to Mail Merge Image in Word in Java

import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.reporting.MergeImageFieldEventArgs;
import com.spire.doc.reporting.MergeImageFieldEventHandler;

import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleMailMerge {
    public static void main(String[] args) throws Exception {
        //create a Document instance
        Document document = new Document();
        //load the template document
        document.loadFromFile("template - Copy.docx");

        //specify the merge field name
        String[] filedNames = new String[]{"image"};
        //specify the path of image 
        String[] filedValues = new String[]{"logo.png"};
        //invoke the mail merge event to load image 
        document.getMailMerge().MergeImageField = new MergeImageFieldEventHandler() {
            public void invoke(Object sender, MergeImageFieldEventArgs args) {
                mailMerge_MergeImageField(sender, args);
            }
        };
        //execute mail merge
        document.getMailMerge().execute(filedNames, filedValues);

        //save file
        document.saveToFile("MailMergeImage.docx", FileFormat.Docx_2013);
    }
    //create a mail merge event to load image
    private static void mailMerge_MergeImageField(Object sender, MergeImageFieldEventArgs field) {
        String filePath = field.getImageFileName();
        if (filePath != null && !"".equals(filePath)) {
            try {
                field.setImage(filePath);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

The output document:

How to Mail Merge Image in Word in Java

This article will demonstrate how to create a mail merge template and then merge the text value to the template in Java application with the help of Spire.Doc.

import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MailMerge {
    public static void main(String[] args) throws Exception {

        String output = "output/mailMerge.docx";

        //Create a Document instance
        Document document = new Document();

        //Add a section
        Section section = document.addSection();

        //Add 3 paragraphs to the section
        Paragraph para = section.addParagraph();
        Paragraph para2 = section.addParagraph();
        Paragraph para3 = section.addParagraph();

        //Add mail merge templates to each paragraph
        para.setText("Contact Name: ");
        para.appendField("Contact Name", FieldType.Field_Merge_Field);
        para2.setText("Phone: ");
        para2.appendField("Phone", FieldType.Field_Merge_Field);
        para3.setText("Date: ");
        para3.appendField("Date", FieldType.Field_Merge_Field);

        //Set the value for the mail merge template by the field name
        Date currentTime = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString = formatter.format(currentTime);
        String[] filedNames = new String[]{"Contact Name", "Phone", "Date"};
        String[] filedValues = new String[]{"John Smith", "+1 (69) 123456", dateString};

        //Merge the specified value into template
        document.getMailMerge().execute(filedNames, filedValues);

        //save the document to file
        document.saveToFile(output, FileFormat.Docx);
    }
}

Effective screenshot for the mail merge:

Java create mail merge and merge text value on Word