C#을 사용한 MS Word 메일 병합

이 문서에서는 C#을 사용한 MS Word 메일 병합 방법을 설명합니다. IDE 설정 방법, 단계별 절차, 그리고 Word에서 C#을 사용하여 메일 병합을 수행하는 방법을 시연하는 전체 샘플 코드가 포함되어 있습니다. 이 코드에서는 필요한 모든 파일이 생성되므로 실행을 위한 추가 입력 파일이나 데이터가 필요하지 않습니다.

C#을 사용하여 Word에서 메일 병합을 생성하는 단계

  1. Aspose.Words for .NET을 사용하여 메일 병합을 수행할 IDE 설정
  2. DocumentBuilder 클래스를 사용하여 메일 병합 템플릿 파일 생성
  3. 메일 병합 템플릿을 위한 입력 데이터를 포함하는 샘플 XML 파일 생성 또는 로드
  4. 로드된 XML 파일에서 DataSet 생성
  5. MailMerge.Execute()를 호출하여 위의 데이터 테이블을 사용해 문서 병합 실행
  6. 테이블의 각 항목마다 개별 페이지로 출력되는 Word 파일 저장

위의 단계는 C#을 사용한 MS Word 메일 병합 방법을 설명합니다. 먼저, 샘플 학생 보고서 템플릿을 생성하고, XML 파일로 학생 보고서 데이터를 준비한 후, 해당 데이터를 사용하여 데이터 테이블을 만듭니다. 그런 다음, MailMerge.Execute() 메서드를 호출하여 DataSet에서 대상 테이블 이름을 지정하고, 결과 Word 파일을 디스크에 저장합니다.

C#을 사용하여 MS Word에서 메일 병합을 생성하는 코드

using System.Data;
using Aspose.Words;
class Program
{
static void Main()
{
// Apply license
License license = new License();
license.SetLicense("license.lic");
// Create a student report template
Document document = CreateStudentReportTemplate();
document.Save("ReportTemplate.docx");
Console.WriteLine("Report Template generated successfully.");
// Generate an XML file with sample student data
string XmlFileName = GenerateSampleStudentData();
Console.WriteLine($"Sample XML file '{XmlFileName}' has been created.");
// Read the XML data into a DataSet
DataSet studentDataset = new DataSet();
studentDataset.ReadXml(XmlFileName);
// Perform mail merge using the dataset
Document doc = new Document("ReportTemplate.docx");
doc.MailMerge.Execute(studentDataset.Tables["Student"]);
// Save the final report
doc.Save("FinalReports.docx");
Console.WriteLine("Mail merge completed. Output saved as 'FinalReports.docx'.");
}
static Document CreateStudentReportTemplate()
{
// Create a new document using DocumentBuilder
DocumentBuilder builder = new DocumentBuilder();
// Insert student name fields
builder.InsertField("MERGEFIELD StudentFirstName \\* MERGEFORMAT");
builder.InsertField("MERGEFIELD StudentLastName \\* MERGEFORMAT");
builder.InsertParagraph();
// Insert academic details
builder.InsertField("MERGEFIELD Subject \\* MERGEFORMAT");
builder.InsertBreak(BreakType.LineBreak);
builder.InsertField("MERGEFIELD MarksObtained \\* MERGEFORMAT");
builder.InsertBreak(BreakType.LineBreak);
builder.InsertField("MERGEFIELD TotalMarks \\* MERGEFORMAT");
builder.InsertBreak(BreakType.LineBreak);
builder.InsertField("MERGEFIELD Grade \\* MERGEFORMAT");
builder.InsertParagraph();
// Insert teacher comments
builder.InsertField("MERGEFIELD TeacherComments \\* MERGEFORMAT");
builder.InsertBreak(BreakType.LineBreak);
// Insert principal's name
builder.InsertField("MERGEFIELD PrincipalName \\* MERGEFORMAT");
builder.InsertParagraph();
return builder.Document;
}
static string GenerateSampleStudentData()
{
string fileName = "StudentData.xml";
File.WriteAllText(fileName, $@"
<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>");
return fileName;
}
}

이 코드는 C#을 사용한 MS Word 메일 병합 단계별 방법을 보여줍니다. DocumentBuilder.InsertField() 메서드를 사용하여 MERGEFIELD 태그를 포함한 템플릿을 생성하였습니다. 필요에 따라 다양한 스타일과 레이아웃 설정을 적용하여 템플릿을 원하는 형태로 조정할 수 있습니다.

이 문서를 통해 C#을 사용한 MS Word 메일 병합을 단계별로 수행하는 방법을 배웠습니다. 사용자 정의 테이블 스타일 및 디자인을 설정하려면 C#을 사용하여 Word에서 테이블 디자인하기 문서를 참조하세요.

 한국인