소개

C# 우편 병합을 통해 Aspose.Words for .NET을 사용하여 보고서, 편지 및 송과 같은 개인화된 문서를 자동으로 생성하여 시간과 노력을 절약하세요. 이 가이드는 귀하의 .NET 애플리케이션 내에서 MS Word 또는 Office Interop 없이 효율적이고 확장 가능한 문서 생성을 수행하기 위해 Aspose.Words 우편 병합 플러그인을 활용하는 방법을 설명합니다. 보고서 자동화를 위한 C# 우편 병합을 통합하여 보고서 워크플로를 간소화하는 방법을 배우게 됩니다.


목차:


우편 병합이란?

우편 병합은 다양한 소스의 데이터로 템플릿을 채워 동적으로 문서를 생성하는 방법론입니다. Aspose.Words를 사용하면 다음과 같은 작업을 원활하게 자동화할 수 있습니다:

  • 개인화된 세부정보가 있는 편지 및 송장 생성.
  • XML, JSON 또는 데이터베이스와 같은 구조화된 형식의 데이터를 사용하여 대량 보고서를 생성하여 C# 및 Aspose.Words로 동적 보고서 생성을 가능하게 합니다.

우편 병합을 위한 데이터 소스

Aspose.Words는 다양한 데이터 소스를 지원합니다:

  • 객체: 클래스 인스를 사용하여 템플릿을 채움.
  • XML: 동적 필드를 위한 구조화된 데이터 로드.
  • JSON: 현대 API와의 통합 용이.
  • CSV: 대량 문서 생성을 위한 표 형식 데이터 활용.
  • DataTable/DataSet: ADO.NET을 통한 데이터베이스 통합 이용.

우편 병합 템플릿 준비

우편 병합 템플릿은 실행 중에 지정된 데이터 소스의 데이터로 채워질 병합 필드를 포함하는 문서입니다. 템플릿은 DOC 또는 DOCX 형식일 수 있으며 특정 템플릿 스타일이 필수는 아닙니다. 우편 병합 템플릿을 만들기 위해 다음 단계를 따르십시오:

  1. MS Word에서 문서를 열거나 새 문서를 만드세요.
  2. 병합 필드를 삽입할 위치에 커서를 놓으세요.
  3. 삽입 메뉴에서 필드 옵션을 선택하세요.
  4. 필드 이름 목록에서 MergeField를 선택하세요.
  5. 필드 이름 상자에 병합 필드의 이름을 지정하고 확인을 클릭하세요.
  6. 문서를 저장하세요.

다음 스크린샷은 샘플 템플릿 문서를 설명합니다.

우편 병합 템플릿

.NET 우편 병합 API - 설치

다양한 방법을 통해 Aspose.Words for .NET을 설치할 수 있습니다:

C#을 사용한 Word 문서에서 우편 병합 수행

템플릿이 준비되면 문서를 생성하기 위해 우편 병합을 실행합니다. 준비된 템플릿에서 우편 병합을 수행하는 단계는 다음과 같습니다:

  1. Document 클래스를 사용하여 템플릿 문서를 불러옵니다.
  2. Document.MailMerge.TrimWhitespaces와 같은 필요 우편 병합 옵션을 설정합니다.
  3. 데이터 소스를 매개변수로 전달하여 Document.MailMerge.Execute() 메서드를 사용하여 우편 병합을 실행합니다.
  4. Document.Save(String) 메서드를 사용하여 생성된 문서를 저장합니다.

다음은 값 배열을 사용하여 C#에서 보고서 생성을 자동화하는 방법을示示하는 코드 샘플입니다:


우편 병합 이후의 Word 문서

C#에서 우편 병합 실행

XML 데이터 소스를 사용한 C#에서 우편 병합 수행

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 파일의 데이터로 채워질 우편 병합 템플릿입니다.

XML을 위한 우편 병합 템플릿

이 이미지는 우편 병합을 실행한 후의 결과 Word 문서의 첫 페이지를 나타냅니다.

C#에서 XML로 우편 병합 실행

병합 필드의 사용자 정의 서식

Aspose.Words for .NET은 우편 병합 프로세스를 향상된 제어를 제공합니다. MailMerge.FieldMergingCallback 속성을 사용하면 각 병합 필드가 발견될 때 우편 병합 동작을 구성할 수 있습니다. IFieldMergingCallback.FieldMergingIFieldMergingCallback.ImageFieldMerging 메서드를 구현하면 우편 병합 작업을 사용자 정의할 수 있습니다.

다음은 제공된 샘플 템플릿을 통해 우편 병합 중 사용자 정의 서식을 적용하는 방법을示示하는 코드 샘플입니다:

다음은 HandleMergeFieldAlternatingRows 클래스를 구현합니다.

C#을 사용한 영역 간의 우편 병합

특정 영역을 Word 문서 내에서 채우고 반복해야 할 경우가 있습니다. 이러한 경우에는 영역 간의 우편 병합을 활용하십시오. 영역을 만들려면 시작과 끝을 지정해야 하며, 그러면 우편 병합은 데이터 소스의 각 레코드에 대해 이 영역을 반복합니다. 아래 템플릿 예제에는 병합 필드 «TableStart:Orders», «TableEnd:Orders», «TableStart:OrderDetails», 및 «TableEnd:OrderDetails»를 사용한 두 개의 영역—주문 및 주문 세부정보가 포함되어 있습니다.

영역 간의 우편 병합

여기 이전에 언급한 템플릿을 기반으로 영역에 따라 우편 병합을 실행하는 코드 샘플입니다.

다음 방법들은 데이터베이스에서 데이터를 읽는 방법을 설명합니다.

중첩 우편 병합 영역

소스의 데이터는 종종 관계형 형식으로 구조화됩니다. 예를 들어 “주문"은 “주문 세부정보"와 1 대 다 관계를 가질 수 있으며, 이는 주문 내에 있는 품목의 레코드를 보관합니다. 이러한 경우에는 중첩 우편 병합을 활용하십시오. 아래는 이러한 시나리오에 잘 맞는 샘플 인보이스 템플릿입니다.

영역 간의 우편 병합 템플릿

다음은 우리의 중첩 우편 병합 예제를 위한 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 문서의 첫 페이지입니다.

우편 병합 후 Word 문서

결론

Aspose.Words for .NET은 .NET 애플리케이션에 적합한 표준 및 확장된 기능을 제공하는 종합적인 우편 병합 API입니다. 몇 줄의 코드로 다양한 데이터 소스에서 간단하거나 복잡한 보고서를 원활하게 개발할 수 있습니다. .NET 자동화 보고서 생성 모범 사례에 대한 안내는 문서를 참조하세요. Aspose.Words for .NET을 시작하려면 개발자 가이드GitHub의 샘플 코드를 탐색하세요. Aspose 플러그인은 보고서 생성을 위한 고급 기능도 제공합니다.

Aspose.Words for .NET을 무료로 사용해 보세요

제한 없이 Aspose.Words for .NET을 사용해 볼 수 있는 무료 임시 라이센스를 얻을 수 있습니다. 지금 임시 라이센스를 받으세요.

관련 링크