소개
보고서, 편지 및 송장과 같은 개인화된 문서 생성을 자동화하면 시간과 노력을 절약할 수 있습니다. Aspose.Words for .NET으로 구동되는 C# 메일 머지를 통해 이를 원활하게 달성할 수 있습니다. 이 가이드는 Aspose.Words 메일 머지 플러그인을 사용하여 .NET 애플리케이션 내에서 효율적이고 확장 가능한 문서 생성을 수행하는 방법을 안내합니다. MS Word 또는 Office Interop이 필요하지 않습니다. 마지막에는 보고서 자동화를 위한 C# 메일 머지를 통합하고 보고서 워크플로를 간소화할 수 있는 능력을 갖추게 될 것입니다.
목차:
- 메일 머지란 무엇인가?
- 메일 머지를 위한 데이터 소스
- 메일 머지 템플릿 준비하기
- Aspose.Words for .NET 시작하기
- 샘플 데이터로 메일 머지 수행하기
- XML 데이터로 메일 머지하기
- 커스텀 머지 필드 포맷팅
- 지역을 사용한 메일 머지
- 중첩 메일 머지
- 결론
메일 머지란 무엇인가?
메일 머지는 다양한 소스의 데이터를 사용하여 템플릿을 채워 동적으로 문서를 생성하는 강력한 방법론입니다. Aspose.Words를 사용하면 다음과 같은 작업을 자동화할 수 있습니다:
- 개인화된 편지 및 송장 생성.
- XML, JSON 또는 데이터베이스와 같은 구조화된 형식을 사용하여 대량 보고서를 생성하여 C# 및 Aspose.Words로 동적 보고서 생성을 가능하게 합니다.
메일 머지를 위한 데이터 소스
Aspose.Words는 다음과 같은 다양한 데이터 소스를 지원합니다:
- 객체: 클래스 인스턴스를 사용하여 템플릿을 채우기.
- XML: 동적 필드를 위한 구조화된 데이터 로드.
- JSON: 현대 API와 쉽게 통합.
- CSV: 대량 문서 생성을 위한 표 형식 데이터 활용.
- DataTable/DataSet: 데이터베이스 통합을 위한 ADO.NET 활용.
메일 머지 템플릿 준비하기
메일 머지 템플릿은 실행 중에 지정된 데이터 소스의 데이터로 채워질 머지 필드를 포함하는 문서입니다. 템플릿은 DOC 또는 DOCX 형식일 수 있으며 특정 스타일이 필요하지 않습니다. 다음 단계를 따라 메일 머지 템플릿을 만드세요:
- MS Word에서 문서를 열거나 새 문서를 만듭니다.
- 머지 필드를 삽입할 위치에 커서를 놓습니다.
- 삽입 메뉴에서 필드 옵션을 선택합니다.
- 필드 이름 목록에서 MergeField를 선택합니다.
- 필드 이름 상자에 머지 필드의 이름을 지정하고 확인을 클릭합니다.
- 문서를 저장합니다.
다음 스크린샷은 샘플 템플릿 문서를 보여줍니다.

.NET 메일 머지 API - 설치
다양한 방법으로 Aspose.Words for .NET을 설치할 수 있습니다:
C#을 사용하여 Word 문서에서 메일 머지 수행하기
템플릿이 준비되면 문서 생성을 위한 메일 머지를 실행할 수 있습니다. 준비된 템플릿에서 메일 머지를 수행하는 단계는 다음과 같습니다:
- Document 클래스를 사용하여 템플릿 문서를 로드합니다.
- Document.MailMerge.TrimWhitespaces와 같은 필요한 메일 머지 옵션을 설정합니다.
- 데이터 소스를 매개변수로 전달하여 Document.MailMerge.Execute() 메서드를 사용하여 메일 머지를 실행합니다.
- Document.Save(String) 메서드를 사용하여 생성된 문서를 저장합니다.
다음은 값 배열을 사용하여 C#에서 보고서 생성을 자동화하는 방법을 보여주는 코드 샘플입니다:
메일 머지 후 Word 문서

C#에서 XML 데이터 소스를 사용하여 메일 머지 수행하기
XML 파일은 데이터를 저장하고 전송하는 데 일반적으로 사용됩니다. Aspose.Words for .NET은 메일 머지 작업을 위한 데이터 소스로 XML을 지원합니다. XML을 DataSet 객체로 읽고 메일 머지를 실행하기만 하면 됩니다. 아래는 우리의 사용 사례에 대한 샘플 XML 파일입니다.
<customers>
<customer Name="John Ben Jan" ID="1" Domain="History" City="Boston"/>
<customer Name="Lisa Lane" ID="2" Domain="Chemistry" City="LA"/>
<customer Name="Dagomir Zits" ID="3" Domain="Heraldry" City="Milwaukee"/>
<customer Name="Sara Careira Santy" ID="4" Domain="IT" City="Miami"/>
</customers>
다음 코드 샘플은 XML 데이터 소스에서 데이터를 검색하고 C#을 사용하여 메일 머지를 실행합니다.
아래는 XML 파일에서 데이터를 채울 메일 머지 템플릿입니다.

이 이미지는 메일 머지를 실행한 후 생성된 Word 문서의 첫 페이지를 나타냅니다.

머지 필드의 커스텀 포맷팅
Aspose.Words for .NET은 메일 머지 프로세스에 대한 향상된 제어를 제공합니다. MailMerge.FieldMergingCallback 속성을 사용하면 각 머지 필드를 만날 때 메일 머지 동작을 구성할 수 있습니다. IFieldMergingCallback.FieldMerging 및 IFieldMergingCallback.ImageFieldMerging 메서드를 구현하면 메일 머지 작업을 사용자 정의할 수 있습니다.
아래는 제공된 샘플 템플릿을 통해 메일 머지 중에 커스텀 포맷팅을 적용하는 방법을 보여주는 코드 샘플입니다:
다음은 HandleMergeFieldAlternatingRows 클래스를 구현합니다.
C#을 사용한 지역을 통한 메일 머지
경우에 따라 Word 문서 내에서 특정 지역을 채우고 반복해야 할 필요가 있을 수 있습니다. 이러한 시나리오에서는 지역을 사용한 메일 머지를 활용합니다. 지역을 만들려면 지역의 시작과 끝을 모두 지정해야 하며, 메일 머지는 데이터 소스의 각 레코드에 대해 이 지역을 반복합니다. 아래 템플릿 예제에는 머지 필드 «TableStart:Orders», «TableEnd:Orders», «TableStart:OrderDetails», «TableEnd:OrderDetails»를 사용하여 두 개의 지역—주문 및 주문 세부 정보—가 포함되어 있습니다.

다음은 앞서 언급한 템플릿에 대해 지역을 기반으로 메일 머지를 실행하는 코드 샘플입니다.
다음 방법은 데이터베이스에서 데이터를 읽는 방법을 보여줍니다.
중첩 메일 머지 지역
종종 소스의 데이터는 관계형 형식으로 구조화됩니다. 예를 들어, “주문"은 주문 내 항목의 기록을 유지하는 “주문 세부 정보"와 일대다 관계를 가질 수 있습니다. 이러한 시나리오에서는 중첩 메일 머지를 활용합니다. 아래는 이 시나리오에 적합한 샘플 송장 템플릿입니다.

다음은 중첩 메일 머지 예제에 대한 XML 데이터 소스입니다.
<?xml version="1.0" encoding="utf-8"?>
<Orders xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="OrdersSchema.xsd">
<Order>
<Number>23</Number>
<Address>Nelson Street</Address>
<Suburb>Howick</Suburb>
<City>Auckland</City>
<Phonenumber>543 1234</Phonenumber>
<Date>03/01/2010</Date>
<Total>14.00</Total>
<Item>
<Name>BBQ Chicken Pizza</Name>
<Price>6.00</Price>
<Quantity>1</Quantity>
<ItemTotal>6.00</ItemTotal>
</Item>
<Item>
<Name>1.5 Litre Coke</Name>
<Price>4.00</Price>
<Quantity>2</Quantity>
<ItemTotal>8.00</ItemTotal>
</Item>
</Order>
<Order>
<Number>10</Number>
<Address>Parkville Avenue</Address>
<Suburb>Pakuranga</Suburb>
<City>Auckland</City>
<Phonenumber>548 7342</Phonenumber>
<Date>05/03/2010</Date>
<Total>6.00</Total>
<Item>
<Name>Hawaiian Pizza</Name>
<Price>4.00</Price>
<Quantity>1</Quantity>
<ItemTotal>4.00</ItemTotal>
</Item>
<Item>
<Name>Fries</Name>
<Price>1.00</Price>
<Quantity>2</Quantity>
<ItemTotal>2.00</ItemTotal>
</Item>
</Order>
</Orders>
이 XML에 대한 해당 OrderSchema.xsd 파일은 다음과 같습니다:
<?xml version="1.0" encoding ="utf-8"?>
<xs:schema id="OrdersSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Orders">
<xs:complexType>
<xs:sequence>
<xs:element name="Order">
<xs:complexType>
<xs:sequence>
<xs:element name="Number"/>
<xs:element name="Address"/>
<xs:element name="Suburb"/>
<xs:element name="City"/>
<xs:element name="Phonenumber"/>
<xs:element name="Date"/>
<xs:element name="Total"/>
<xs:element name="Item">
<xs:complexType>
<xs:sequence>
<xs:element name="Name"/>
<xs:element name="Price"/>
<xs:element name="Quantity"/>
<xs:element name="ItemTotal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
다음 코드 샘플은 C#을 사용하여 중첩 메일 머지를 실행합니다.
메일 머지 후 Word 문서
아래는 중첩 메일 머지를 실행한 후 생성된 Word 문서의 첫 페이지입니다.

결론
Aspose.Words for .NET은 .NET 애플리케이션에 적합한 표준 및 확장 기능을 제공하는 포괄적인 메일 머지 API입니다. 몇 줄의 코드로 다양한 데이터 소스에서 간단하거나 복잡한 보고서를 원활하게 개발할 수 있습니다. .NET 자동 보고서 생성 모범 사례에 대한 안내는 문서를 참조하십시오. Aspose.Words for .NET을 시작하려면 사용 가능한 개발자 가이드 및 GitHub에서 샘플 코드를 탐색하세요. Aspose 플러그인은 보고서 생성을 위한 고급 기능도 제공합니다.
Aspose.Words for .NET 무료 체험
제한 없이 Aspose.Words for .NET을 사용해 볼 수 있는 무료 임시 라이센스를 받을 수 있습니다. 지금 임시 라이센스를 받으세요.