Главное Авторские колонки Вакансии Вопросы
236 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Как выполнить Mail Merge в Word с помощью Java

В этой статье я покажу, как создать шаблон, содержащий поля слияния писем, и как объединить текстовые значения и изображения в поля слияния, используя Free Spire.Doc for Java.
Мнение автора может не совпадать с мнением редакции

Слияние писем — это мощная функция Microsoft Word, позволяющая создавать персонализированные документы, такие как письма, конверты или этикетки, путем слияния основного документа с источником данных. Использование функции слияния писем позволяет экономить время и силы при массовой рассылке приглашений, информационных бюллетеней или счетов-фактур, поскольку можно настраивать содержание для каждого получателя, не набирая и не копируя его вручную несколько раз.

В этой статье я покажу, как создать шаблон, содержащий поля слияния писем, и как объединить текстовые значения и изображения в поля слияния, используя Free Spire.Doc for Java.

Установка файла Free Spire.Doc.jar

Если вы создали Maven-проект, вы можете легко импортировать jar в свое приложение, используя следующие конфигурации. Для проектов, не использующих Maven, загрузите jar-файл по этой ссылке и добавьте его в качестве зависимости в свое приложение.


Создание шаблона, содержащего поля Mail Merge, на Java

Рекомендуется создавать шаблон с помощью Microsoft Word, поскольку при ручном проектировании легче корректировать макет и общий вид в режиме реального времени. Однако если вы хотите программно вставить поля почтовой сортировки в документ Word, выполните следующие действия.

  • Создайте новый пустой объект документа.
  • Добавьте в документ раздел.
  • Добавьте в раздел абзац.
  • Добавьте в абзац поля почтовой сортировки с помощью метода Paragraph.appendField().
  • Сохраните документ в файл .docx.

import com.spire.doc.Document;

import com.spire.doc.FieldType;

import com.spire.doc.FileFormat;

import com.spire.doc.Section;

import com.spire.doc.documents.BreakType;

import com.spire.doc.documents.Paragraph;

public class CreateMailMergeFields {

public static void main(String[] args) {

//Create a Document object

Document document = new Document();

//Add a section

Section section = document.addSection();

//Add a paragraph

Paragraph paragraph = section.addParagraph();

//Add text and mail merge fields to the paragraph

paragraph.appendText("Name: ");

paragraph.appendField("Name", FieldType.Field_Merge_Field);

paragraph.appendBreak(BreakType.Line_Break);

paragraph.appendText("Phone: ");

paragraph.appendField("Phone", FieldType.Field_Merge_Field);

paragraph.appendBreak(BreakType.Line_Break);

paragraph.appendText("Date: ");

paragraph.appendField("Date", FieldType.Field_Merge_Field);

paragraph.appendBreak(BreakType.Line_Break);

paragraph.appendText("Portrait: ");

paragraph.appendField("Image:Portrait", FieldType.Field_Merge_Field);

//Save the document

document.saveToFile("Template.docx", FileFormat.Docx_2013);

}

}


Слияние полей с данными

В данном примере кода загружается шаблон Word, задаются имена и значения полей слияния, выполняется операция слияния и сохраняется полученный документ в новый файл. Ниже приведены подробные шаги.

  • Создайте новый экземпляр класса Document.
  • Загрузите шаблон Word, созданный с помощью приведенного выше кода.
  • Укажите в шаблоне имена полей слияния писем.
  • Укажите текст и изображения для полей слияния писем.
  • Выполните операции слияния по почте, объединив значения в полях.
  • Сохраните объединенный документ в другой файл Word.

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 MergeData {

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

//Create a Document instance

Document document = new Document();

//Load the template

document.loadFromFile("C:\Users\Administrator\Desktop\Template.docx");

//Specify mail merge fields’ names

String[] fieldNames = new String[]{"Name«, «Phone», «Date», «Portrait»};

//Specify text values for the fields

Date currentTime = new Date();

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String dateString = formatter.format(currentTime);

String[] fieldValues = new String[]{"John Smith«, «+1 (69) 123456», dateString, «C:\Users\Administrator\Desktop\portrait.jpg»};

//Invoke the custom method to load image

document.getMailMerge().MergeImageField = new MergeImageFieldEventHandler() {

public void invoke(Object sender, MergeImageFieldEventArgs args) {

mailMerge_MergeImageField(sender, args);

}

};

//Merge the specified values into fields

document.getMailMerge().execute(fieldNames, fieldValues);

//Save the document to file

document.saveToFile("MergeData.docx", FileFormat.Docx_2013);

}

//Create a custom method to load image for mail merge

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();

}

}

}

}


0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.