메일 병합
메일 병합
이 가이드는 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 요약
| 클래스 / 메서드 | 설명 |
|---|---|
FieldMergeField | MERGEFIELD 필드: FieldName, FieldNameNoPrefix, TextBefore, TextAfter, IsMapped |
FieldAddressBlock | ADDRESSBLOCK 필드: 주소 형식 지정 속성 |
FieldGreetingLine | GREETINGLINE 필드: 인사말 서식 속성 |
FieldDatabase | DATABASE 필드: Connection, Query, FileName, TableFormat |
IFieldDatabaseProvider | GetQueryResult()을 통해 DATABASE 필드에 대한 쿼리 결과를 제공합니다 |
FieldNextIf / FieldSkipIf | NEXTIF / SKIPIF 조건부 병합 필드 |
MergeFieldImageDimension | 그림 병합 필드 이미지의 가로/세로 |
Document.MailMergeSettings | 저장된 메일 병합 구성 데이터(실시간 데이터 연결이 아님) |