Mail Merge di MS Word dengan Java

Panduan ini menjelaskan cara melakukan mail merge di MS Word dengan Java. Artikel ini akan memberikan detail tentang pengaturan IDE, daftar langkah-langkah, dan contoh kode yang mendemonstrasikan cara melakukan mail merge di Word dengan Java. Semua data yang diperlukan telah disiapkan dalam kode ini untuk memastikan eksekusi berjalan tanpa kendala.

Langkah-langkah Membuat Mail Merge di Word dengan Java

  1. Atur lingkungan untuk menggunakan Aspose.Words for Java guna membuat mail merge
  2. Buat template file Word dalam objek Document menggunakan kelas DocumentBuilder
  3. Tambahkan semua bidang ke dalam template menggunakan metode insertField()
  4. Buat file XML input sesuai dengan bidang dalam file template Word
  5. Muat file template Word ke dalam objek Document
  6. Panggil metode getMailMerge().execute() dalam kelas Document untuk menghasilkan file Word output
  7. Simpan file Word output

Langkah-langkah di atas menjelaskan cara melakukan mail merge di Word dengan Java. Anda dapat membuat file template Word baru dengan bidang yang diperlukan atau memuat file template yang sudah ada ke dalam objek Document, kemudian membaca file XML ke dalam objek DataSet. Terakhir, panggil metode getMailMerge().execute() dengan melewatkan tabel yang dipilih dan simpan hasilnya setelah menjalankan metode ini.

Kode untuk Membuat Mail Merge di MS Word dengan Java

import com.aspose.words.*;
import com.aspose.words.net.System.Data.DataSet;
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws Exception {
License pdfLicense = new License();
pdfLicense.setLicense("license.lic");
// Create a student report template
Document document = createStudentReportTemplate();
document.save("ReportTemplate.docx");
System.out.println("Report Template generated successfully.");
// Generate an XML file with sample student data
String xmlFileName = generateSampleStudentData();
System.out.println("Sample XML file '" + xmlFileName + "' has been created.");
// Perform mail merge using the dataset
Document doc = new Document("ReportTemplate.docx");
DataSet studentDataset = readXmlToDataSet(xmlFileName);
doc.getMailMerge().execute(studentDataset.getTables().get("Student"));
// Save the final report
doc.save("FinalReports.docx");
System.out.println("Mail merge completed. Output saved as 'FinalReports.docx'.");
}
static Document createStudentReportTemplate() throws Exception {
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Insert student name fields
builder.insertField("MERGEFIELD StudentFirstName \\\u002A MERGEFORMAT");
builder.insertField("MERGEFIELD StudentLastName \\\u002A MERGEFORMAT");
builder.writeln();
// Insert academic details
builder.insertField("MERGEFIELD Subject \\\u002A MERGEFORMAT");
builder.insertBreak(BreakType.LINE_BREAK);
builder.insertField("MERGEFIELD MarksObtained \\\u002A MERGEFORMAT");
builder.insertBreak(BreakType.LINE_BREAK);
builder.insertField("MERGEFIELD TotalMarks \\\u002A MERGEFORMAT");
builder.insertBreak(BreakType.LINE_BREAK);
builder.insertField("MERGEFIELD Grade \\\u002A MERGEFORMAT");
builder.writeln();
// Insert teacher comments
builder.insertField("MERGEFIELD TeacherComments \\\u002A MERGEFORMAT");
builder.insertBreak(BreakType.LINE_BREAK);
// Insert principal's name
builder.insertField("MERGEFIELD PrincipalName \\\u002A MERGEFORMAT");
builder.writeln();
return doc;
}
static String generateSampleStudentData() throws IOException {
String fileName = "StudentData.xml";
String xmlContent = """
<Students>
<Student>
<StudentFirstName>Emily</StudentFirstName>
<StudentLastName>Johnson</StudentLastName>
<Subject>Mathematics</Subject>
<MarksObtained>85</MarksObtained>
<TotalMarks>100</TotalMarks>
<Grade>A</Grade>
<TeacherComments>Excellent performance!</TeacherComments>
<PrincipalName>Dr. William Carter</PrincipalName>
</Student>
<Student>
<StudentFirstName>Liam</StudentFirstName>
<StudentLastName>Smith</StudentLastName>
<Subject>Science</Subject>
<MarksObtained>78</MarksObtained>
<TotalMarks>100</TotalMarks>
<Grade>B</Grade>
<TeacherComments>Good effort, keep improving.</TeacherComments>
<PrincipalName>Dr. William Carter</PrincipalName>
</Student>
</Students>
""";
try (FileWriter writer = new FileWriter(fileName)) {
writer.write(xmlContent);
}
return fileName;
}
static DataSet readXmlToDataSet(String xmlFileName) throws Exception {
DataSet dataSet = new DataSet();
dataSet.readXml(xmlFileName);
return dataSet;
}
}

Kode ini telah menjalankan semua langkah-langkah mail merge di MS Word dengan Java. Kelas DocumentBuilder menyediakan berbagai metode dan properti yang dapat dikonfigurasi untuk menyesuaikan template guna memformat laporan. Kode ini akan menghasilkan halaman terpisah dalam file Word output untuk setiap entri dalam tabel.

Artikel ini telah membahas cara menggunakan mail merge di Word dengan Java. Jika Anda ingin mengatur gaya tabel dalam file yang sudah ada, lihat artikel berikut: Desain Tabel di Word dengan Java.

 Indonesian