Posta Birleştirme
Posta Birleştirme
Bu rehber, Aspose.Words FOSS for .NET içinde posta birleştirme alan kodları ve posta birleştirme yapılandırma verileriyle nasıl çalışılacağını ve birleştirme yürütmesiyle sınırın nerede olduğunu gösterir. Aspose.Words FOSS for .NET, Word posta birleştirme alan kodlarını tanır ve günceller — ADDRESSBLOCK, DATABASE, GREETINGLINE, MERGEFIELD, NEXTIF, ve SKIPIF — alan değerlendirme motorunun bir parçası olarak, ve posta birleştirme yapılandırma verilerini okuyabilir (MailMergeSettings) bir belge içinde kalıcı olarak saklanır. Harici bir veri kaynağına karşı gerçek bir birleştirme çalıştırarak doldurulmuş çıktı belgeleri oluşturmak — MailMerge.Execute() ticari üründen tanıdık olan iş akışı — şudur not bu sürümde uygulanmıştır; yok MailMerge çalıştırma sınıfı mevcut API yüzeyinde.
MERGEFIELD — Birleştirme Yer Tutucularını Okuma ve Değiştirme
FieldMergeField, MERGEFIELD alanını uygular. FieldName ve FieldNameNoPrefix, alanın bağlı olduğu temel veri kaynağı sütun adını döndürür, TextBefore/TextAfter birleştirilmiş değerin etrafında sarılan düz metni tutar ve IsMapped/IsVerticalFormatting birleştirme alanı eşleştirmesini ve düzen bayraklarını rapor eder. Her alan türü gibi, GetFieldCode(), Update(), Unlink() ve Remove() destekler.
ADDRESSBLOCK ve GREETINGLINE
FieldAddressBlock, ADDRESSBLOCK alanını uygular; FormatAddressOnCountryOrRegion, IncludeCountryOrRegionName, ExcludedCountryOrRegionName, NameAndAddressFormat ve LanguageId, alıcının adresinin nasıl biçimlendirileceğini kontrol eder. FieldGreetingLine, GREETINGLINE uygular; AlternateText, NameFormat ve LanguageId selamlama metnini kontrol eder.
DATABASE Alanı
FieldDatabase, DATABASE alanını uygular ve alanda saklanan bağlantı ayrıntılarını ortaya çıkarır: Connection, FileName, Query, TableFormat, InsertHeadings, InsertOnceOnMailMerge, FirstRecord ve LastRecord. Bu alan güncellendiğinde sorgu sonuçları sağlamak için IFieldDatabaseProvider ve onun GetQueryResult(fileName, connection, query, field) metodunu uygulayın, ardından Update() çağırmadan önce Document.FieldOptions.FieldDatabaseProvider öğesine atayın. Connection özelliği ayarlanmalıdır — aksi takdirde Update() sorgulayacak bir veri kaynağına sahip olmaz.
Koşullu Birleştirme Alanları — NEXTIF ve SKIPIF
FieldNextIf ve FieldSkipIf, NEXTIF ve SKIPIF alanlarını uygular, her biri koşullu test için LeftExpression, ComparisonOperator ve RightExpression öğelerini ortaya çıkarır. Document.FieldOptions.ComparisonExpressionEvaluator (IComparisonExpressionEvaluator bir IComparisonExpressionEvaluator) bu koşullu ifadelerin nasıl değerlendirileceğini geçersiz kılabilir.
Resim Birleştirme Alanı Boyutlandırma
MergeFieldImageDimension, bir resim birleştirme alanı aracılığıyla eklenen görüntünün genişliğini veya yüksekliğini temsil eder, new MergeFieldImageDimension(value) (puan cinsinden) veya new MergeFieldImageDimension(value, unit) olarak, açık bir MergeFieldImageDimensionUnit (Point veya Percent) ile oluşturulur. Value ve Unit özellikleri ikisi de yazılabilir.
Kapsamda Neler Var, Neler Yok
Document.MailMergeSettings döndürür MailMergeSettings posta birleştirme yapılandırmasını modelleyen nesne OOXML bir belge içinde kalıcıdır — DataSource, ConnectString, Query, MainDocumentType, DataType, Destination, CheckErrors, ve Office Data Source Object (ODSO) ayarları aracılığıyla OdsoFieldMapData/OdsoRecipientData koleksiyonlar. Bu bir yapılandırmadır data belge içinde taşınır, canlı bir bağlantı değildir: okuma ve yazma MailMergeSettings bir veritabanına, elektronik tabloya veya adres listesine bağlanmaz ve bu sürümde yoktur MailMerge bir birleştirme çalıştırmak ve bundan doldurulmuş çıktı belgeleri üretmek için yürütme sınıfı. Bu sürümün desteklediği şey, üstteki alan düzeyi katmandır: birleştirme alan kodlarını tanıma, okuma, güncelleme ve bir belge içinde alan değerlendirme motoru aracılığıyla değiştirme.
İpuçları ve En İyi Uygulamalar
MailMergeSettings‘ı, dış veriyle bağlanmak için bir API olarak değil, okuyabileceğiniz ve döngüsel olarak aktarabileceğiniz belge üst verisi olarak ele alın — bu sürümde arkasında bir yürütme motoru yok.DATABASEalanındaUpdate()çağırmadan önce daimaFieldDatabase.Connection‘ı ayarlayın, aksi takdirde güncellemenin sorgulayacak bir şeyi olmaz.IFieldDatabaseProvider‘ı bir kez uygulayın veDocument.FieldOptions.FieldDatabaseProvideraracılığıyla atayın; böylece bir belgedeki tümDATABASEalanlarının verilerini nasıl çözdükleri merkezileştirilir.- Programatik olarak nasıl işleneceğine karar vermeden önce, bir
MERGEFIELD‘in bağlı olduğu veri kaynağı sütununu okumak içinFieldMergeField.FieldName‘ı kullanın.
Yaygın Sorunlar
| Sorun | Neden | Düzelt |
|---|---|---|
FieldDatabase.Update() veri döndürmüyor | Connection ayarlanmamış veya IFieldDatabaseProvider kayıtlı değil | Connection‘ı ayarlayın ve güncellemeden önce Document.FieldOptions.FieldDatabaseProvider‘ı atayın |
Bir MailMerge.Execute()-stil API bekleniyor | Harici bir veri kaynağına karşı birleştirme yürütmesi bu FOSS sürümde uygulanmadı | Tek bir belgede birleştirme alan sınıflarıyla doğrudan (FieldMergeField, FieldDatabase, vb.) çalışın veya tam birleştirme yürütmesi için .NET amacıyla ticari Aspose.Words’yi kullanın |
NEXTIF/SKIPIF koşulları beklenmedik şekilde değerlendiriliyor | Varsayılan karşılaştırma ifadesi değerlendirmesi beklenen anlamla eşleşmiyor | IComparisonExpressionEvaluator öğesini uygulayın ve Document.FieldOptions.ComparisonExpressionEvaluator değişkenine atayın |
FAQ
Bu sürümde bir CSV veya veritabanı üzerinde bir posta birleştirme çalıştırabilir miyim?
Hayır. Bu sürüm, posta birleştirme alan kodlarını ve MailMergeSettings yapılandırma veri modelini uygular, ancak dış bir veri kaynağına bağlanıp doldurulmuş belgeler oluşturacak bir MailMerge yürütme sınıfı yoktur.
MERGEFIELD alanlarıyla aslında ne yapabilirim, peki?
Onları doğrudan okuyabilir ve değiştirebilirsiniz — bağlı sütun adı için FieldMergeField.FieldName, çevreleyen literal metin için TextBefore/TextAfter, ve diğer alanlar gibi Update()/Unlink()/Remove() — geçerli belge içinde.
MailMergeSettings, birleştirme yürütülmeden işe yaramaz mı?
Hayır — bu sürüm o yapılandırmayı birleştirme çalıştırmak için kullanmasa da, DataSource, Query veya MainDocumentType gibi bir belgenin saklanan posta birleştirme yapılandırmasını okuma veya geri döndürme için hâlâ yararlıdır.
Bir DATABASE alanı için veriyi nasıl sağlarım?
IFieldDatabaseProvider.GetQueryResult(fileName, connection, query, field) öğesini uygulayın ve Document.FieldOptions.FieldDatabaseProvider öğesine uygulamanızı atayın, Update() öğesini çağırmadan önce.
picture merge field tarafından eklenen bir görüntünün boyutunu nasıl kontrol edebilirim?
MergeFieldImageDimension öğesini kullanın; bir nokta değeri ya da açık bir MergeFieldImageDimensionUnit (Point veya Percent) ile oluşturulmuş.
API Reference Özet
| Sınıf / Metot | Açıklama |
|---|---|
FieldMergeField | MERGEFIELD alanı: FieldName, FieldNameNoPrefix, TextBefore, TextAfter, IsMapped |
FieldAddressBlock | ADDRESSBLOCK alanı: adres biçimlendirme özellikleri |
FieldGreetingLine | GREETINGLINE alanı: selamlama biçimlendirme özellikleri |
FieldDatabase | DATABASE alanı: Connection, Query, FileName, TableFormat |
IFieldDatabaseProvider | DATABASE alanları için sorgu sonuçlarını GetQueryResult() üzerinden sağlar |
FieldNextIf / FieldSkipIf | NEXTIF / SKIPIF koşullu birleştirme alanları |
MergeFieldImageDimension | Resim birleştirme alanı görselleri için genişlik/yükseklik |
Document.MailMergeSettings | Kalıcı mail-merge yapılandırma verileri (canlı veri bağlantısı değil) |