이 가이드는 Java를 사용하여 MS Word에서 메일 머지를 수행하는 방법을 설명합니다. IDE 설정 방법, 단계별 절차, 그리고 Word에서 Java를 사용하여 메일 머지를 수행하는 방법을 보여주는 샘플 코드가 포함되어 있습니다. 필요한 데이터는 코드에서 자동으로 생성되므로 추가 리소스 없이 실행할 수 있습니다.
Java에서 MS Word 메일 머지를 수행하는 단계
- Aspose.Words for Java를 설정하여 메일 머지를 수행할 환경을 구성합니다.
- DocumentBuilder 클래스를 사용하여 Word 템플릿 파일을 Document 객체로 생성합니다.
- insertField() 메서드를 사용하여 템플릿에 모든 필드를 추가합니다.
- 템플릿 문서의 필드에 맞는 XML 입력 파일을 생성합니다.
- Word 템플릿 파일을 Document 객체로 로드합니다.
- getMailMerge().execute() 메서드를 호출하여 출력 Word 파일을 생성합니다.
- 출력 Word 파일을 저장합니다.
위 단계에서는 Java를 사용하여 MS Word에서 메일 머지를 수행하는 방법을 설명합니다. 새로운 Word 템플릿을 생성하여 필드를 추가하거나, 기존 템플릿 파일을 Document 객체에 로드하고 XML 파일을 DataSet 객체로 읽어올 수 있습니다. 마지막으로, getMailMerge().execute() 메서드를 호출하여 메일 머지를 실행한 후 결과를 저장합니다.
Java에서 MS Word 메일 머지를 수행하는 코드
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; | |
} | |
} |
이 코드에서는 Java에서 MS Word 메일 머지를 수행하는 모든 단계를 적용하였습니다. DocumentBuilder 클래스에는 다양한 메서드와 속성이 있어, 보고서 서식을 원하는 대로 조정할 수 있습니다. 실행하면 테이블의 각 레코드에 대해 출력 Word 파일에서 개별 페이지가 생성됩니다.
이 문서에서는 Java에서 Word의 메일 머지를 사용하는 방법을 설명했습니다. 기존 Word 파일의 표 스타일을 설정하는 방법에 대한 자세한 내용은 Java에서 Word 표 디자인하기 문서를 참조하세요.