메일 병합

메일 병합

이 가이드는 Aspose.Words FOSS for .NET에서 메일 병합 필드 코드와 메일 병합 구성 데이터를 사용하는 방법과 병합 실행과의 경계가 어디에 있는지를 보여줍니다. Aspose.Words FOSS for .NET는 Word 메일 병합 필드 코드를 인식하고 업데이트합니다 — ADDRESSBLOCK, DATABASE, GREETINGLINE, MERGEFIELD, NEXTIF, 그리고 SKIPIF — 필드 평가 엔진의 일부로서, 그리고 메일 병합 구성 데이터 (MailMergeSettings) 문서 내부에 지속됩니다. 외부 데이터 소스를 대상으로 실제 병합을 실행하여 채워진 출력 문서를 생성하는 — MailMerge.Execute() 상용 제품에서 친숙한 워크플로 — not 이 에디션에 구현되어 있습니다; 없습니다 MailMerge 현재 API 표면에 실행 클래스가 존재합니다.


MERGEFIELD — 병합 자리표 읽기 및 수정

FieldMergeField은(는) MERGEFIELD 필드를 구현합니다. FieldName와 FieldNameNoPrefix은(는) 필드가 바인딩된 기본 데이터 소스 열 이름을 반환하고, TextBefore/TextAfter는 병합된 값 주위에 감싸는 리터럴 텍스트를 보관하며, IsMapped/IsVerticalFormatting은(는) 병합 필드 매핑 및 레이아웃 플래그를 보고합니다. 모든 필드 유형과 마찬가지로, 이는 GetFieldCode(), Update(), Unlink(), Remove()을 지원합니다.


ADDRESSBLOCK 및 GREETINGLINE

FieldAddressBlock은(는) ADDRESSBLOCK 필드를 구현하며, FormatAddressOnCountryOrRegion, IncludeCountryOrRegionName, ExcludedCountryOrRegionName, NameAndAddressFormat, LanguageId이(가) 수신자 주소의 형식을 제어합니다. FieldGreetingLine은(는) GREETINGLINE을 구현하고, AlternateText, NameFormat, LanguageId이(가) 인사말 텍스트를 제어합니다.


DATABASE 필드

FieldDatabase은(는) DATABASE 필드를 구현하여, 필드에 저장된 연결 세부 정보를 노출합니다: Connection, FileName, Query, TableFormat, InsertHeadings, InsertOnceOnMailMerge, FirstRecord, 및 LastRecord. 이 필드가 업데이트될 때 쿼리 결과를 제공하려면 IFieldDatabaseProvider 및 그 GetQueryResult(fileName, connection, query, field) 메서드를 구현하고, Update()을 호출하기 전에 Document.FieldOptions.FieldDatabaseProvider에 할당하십시오. Connection 속성을 설정해야 합니다 — 설정되지 않으면 Update()는 쿼리할 데이터 소스가 없습니다.


조건부 병합 필드 — NEXTIF 및 SKIPIF

FieldNextIf와 FieldSkipIf은(는) NEXTIF 및 SKIPIF 필드를 구현하며, 각각 조건 테스트를 위해 LeftExpression, ComparisonOperator, RightExpression을(를) 노출합니다. Document.FieldOptions.ComparisonExpressionEvaluator(은/는 IComparisonExpressionEvaluator)은(는) 이러한 조건식이 평가되는 방식을 재정의할 수 있습니다.


그림 병합 필드 크기 지정

MergeFieldImageDimension은(는) 그림 병합 필드를 통해 삽입된 이미지의 너비 또는 높이를 나타내며, new MergeFieldImageDimension(value)(포인트 단위) 또는 명시적 MergeFieldImageDimensionUnit(Point 또는 Percent)가 있는 new MergeFieldImageDimension(value, unit)으로 구성됩니다. 해당 Value 및 Unit 속성은 모두 쓰기 가능합니다.


범위에 포함되는 것과 포함되지 않는 것

Document.MailMergeSettings 반환합니다 MailMergeSettings 메일 병합 구성을 모델링하는 객체인 OOXML이 문서 내부에 지속됩니다 — DataSource, ConnectString, Query, MainDocumentType, DataType, Destination, CheckErrors, 그리고 Office Data Source Object (ODSO) 설정을 통해 OdsoFieldMapData/OdsoRecipientData 컬렉션을 통해. 이것은 구성 data 문서가 가지고 있는 것이며, 실시간 연결이 아닙니다: 읽기 및 쓰기 MailMergeSettings 데이터베이스, 스프레드시트 또는 주소록에 연결되지 않으며, 이 버전에는 MailMerge 병합을 실행하고 결과 출력 문서를 생성하는 실행 클래스가 없습니다. 이 버전이 지원하는 것은 위의 필드 수준 레이어이며, 필드 평가 엔진을 통해 단일 문서 내에서 병합 필드 코드를 인식, 읽기, 업데이트 및 수정할 수 있습니다.


팁 및 모범 사례

  • MailMergeSettings를 읽고 라운드 트립할 수 있는 문서 메타데이터로 취급하고, 외부 데이터에 연결하기 위한 API로 보지 마세요 — 이 버전에는 이를 위한 실행 엔진이 없습니다.
  • DATABASE 필드에서 Update()을 호출하기 전에 항상 FieldDatabase.Connection을 설정하세요, 그렇지 않으면 업데이트에 쿼리할 것이 없습니다.
  • IFieldDatabaseProvider을 한 번 구현하고 Document.FieldOptions.FieldDatabaseProvider을 통해 할당하여 문서 내 모든 DATABASE 필드가 데이터를 해석하는 방식을 중앙 집중화하세요.
  • 프로그램적으로 처리 방식을 결정하기 전에 FieldMergeField.FieldName을 사용해 MERGEFIELD이 바인딩된 데이터 소스 열을 읽어보세요.

일반적인 문제

문제원인수정
FieldDatabase.Update()는 데이터를 반환하지 않습니다Connection이 설정되지 않았거나, IFieldDatabaseProvider이 등록되지 않았습니다업데이트하기 전에 Connection을 설정하고, Document.FieldOptions.FieldDatabaseProvider을 할당하세요
MailMerge.Execute() 스타일의 API이 필요합니다외부 데이터 소스에 대한 병합 실행은 이 FOSS 에디션에서 구현되지 않았습니다단일 문서 내에서 병합 필드 클래스를 직접 (FieldMergeField, FieldDatabase 등) 사용하거나, 전체 병합 실행을 위해 .NET에 대한 상업용 Aspose.Words를 사용하세요
NEXTIF/SKIPIF 조건이 예상치 않게 평가됩니다기본 비교식 평가가 예상되는 의미와 일치하지 않습니다IComparisonExpressionEvaluator을 구현하고 이를 Document.FieldOptions.ComparisonExpressionEvaluator에 할당합니다

FAQ

이 버전에서 CSV 또는 데이터베이스에 대한 메일 병합을 실행할 수 있나요?

아니요. 이 버전은 메일 병합 필드 코드를 구현하고 MailMergeSettings 구성 데이터 모델을 제공하지만, 외부 데이터 소스에 연결하고 채워진 문서를 생성할 MailMerge 실행 클래스는 없습니다.

그렇다면 MERGEFIELD 필드로 실제로 무엇을 할 수 있나요?

현재 문서 내에서 직접 읽고 수정할 수 있습니다 — 바인드된 열 이름은 FieldMergeField.FieldName, 주변 리터럴 텍스트는 TextBefore/TextAfter, 그리고 다른 필드와 마찬가지로 Update()/Unlink()/Remove()를 사용합니다.

병합 실행 없이 MailMergeSettings는 쓸모가 없나요?

아니요 — 이 버전이 해당 구성을 사용해 병합을 수행하지 않더라도, DataSource, Query, 혹은 MainDocumentType와 같은 문서에 저장된 메일 병합 구성을 읽거나 라운드 트립하는 데 여전히 유용합니다.

DATABASE 필드에 데이터를 어떻게 제공하나요?

IFieldDatabaseProvider.GetQueryResult(fileName, connection, query, field)을 구현하고, Document.FieldOptions.FieldDatabaseProvider에 구현을 할당한 뒤 Update()를 호출하십시오.

그림 병합 필드로 삽입된 이미지의 크기를 어떻게 제어하나요?

점 값이나 명시적인 MergeFieldImageDimensionUnit(Point 또는 Percent)을 더한 값으로 구성된 MergeFieldImageDimension을 사용하십시오.


API Reference 요약

클래스 / 메서드설명
FieldMergeFieldMERGEFIELD 필드: FieldName, FieldNameNoPrefix, TextBefore, TextAfter, IsMapped
FieldAddressBlockADDRESSBLOCK 필드: 주소 형식 지정 속성
FieldGreetingLineGREETINGLINE 필드: 인사말 서식 속성
FieldDatabaseDATABASE 필드: Connection, Query, FileName, TableFormat
IFieldDatabaseProviderGetQueryResult()을 통해 DATABASE 필드에 대한 쿼리 결과를 제공합니다
FieldNextIf / FieldSkipIfNEXTIF / SKIPIF 조건부 병합 필드
MergeFieldImageDimension그림 병합 필드 이미지의 가로/세로
Document.MailMergeSettings저장된 메일 병합 구성 데이터(실시간 데이터 연결이 아님)

참조

 한국어