Posta Birleştirme, Microsoft Word’ün mektuplar, etiketler ve zarflar gibi belgeleri hızlı ve kolay bir şekilde oluşturmak için bir özelliğidir. Aspose.Words Cloud standart posta birleştirmeyi alır ve onu birçok adım öteye taşıyarak raporlar, kataloglar, envanterler ve faturalar gibi daha da karmaşık belgeler oluşturmanıza olanak tanıyan tam teşekküllü bir raporlama çözümüne dönüştürür. Aspose.Words Cloud raporlama çözümünün avantajları şunlardır:
- Standart posta birleştirme alanlarını kullanarak Microsoft Word’de rapor tasarlama
- Belgede, bir siparişin ayrıntı satırları gibi büyüyen bölgeleri tanımlayın
- Posta birleştirme sırasında resim ekle
- Posta birleştirme sırasında HTML ekle
Temel Adımlar
Bir posta birleştirme işlemini gerçekleştirme adımları oldukça kolaydır. İlk olarak, Microsoft Word’ü kullanarak normalde şablon olarak adlandırılan bir Word belgesi oluşturur ve tasarlarsınız. Belgenin bir Microsoft Word Şablonu (.dot) olması gerekmediğini, normal bir .doc belgesi olabileceğini unutmayın. Şablona, veri kaynağınızdan daha sonra eklenmesini istediğiniz yerlere birleştirme alanları adı verilen bazı özel alanlar eklersiniz. Ardından Aspose.Words REST API ile bir posta birleştirme işlemi yürütürsünüz. Posta birleştirme işlemi, veri kaynağınızdan veri alır ve belgeye birleştirir.
Belgede tekrarlanabilir birleştirme bölgeleri belirleyebilir veya resim gibi diğer içerikleri eklemenize olanak tanıyan özel birleştirme alanları ekleyebilirsiniz. Belge içinde posta birleştirme alanlarını ve tekrarlanabilir bölgeleri nasıl ayarladığınıza bağlı olarak, belge veri kaynağınızdaki birden fazla kaydı barındıracak şekilde büyüyecektir. Posta birleştirme bölgelerini kullanmazsanız, posta birleştirme Microsoft Word posta birleştirmesine benzer olacak ve tüm belge içeriği veri kaynağındaki her kayıt için tekrarlanacaktır. Tekrarlanabilir posta birleştirme bölgelerini kullanarak, veri kaynağındaki her kayıt için tekrarlanacak bir belgenin içindeki bölümleri belirleyebilirsiniz. Örneğin, bir tablo satırını tekrarlanabilir bölge olarak işaretlerseniz, bu tablo satırı tekrarlanacak ve tablonun tüm verilerinizi barındıracak şekilde dinamik olarak büyümesine neden olacaktır.
Bir Belge Hazırlayın
Bir posta birleştirmeyi gerçekleştirmeden önce, belge şablonunu hazırlamanız gerekir. Veri kaynağınızdaki değerlerle değiştirilecek birleştirme alanlarını eklemelisiniz.
Birleştirme Alanlarını Bir Belgeye Ekleme
Bir Belgeye Birleştirme Alanları Eklemek İçin:
- Belgenizi Microsoft Word’de açın.
- Belgede birleştirme alanını yerleştirmek istediğiniz yere tıklayın.
- Ekle menüsünü açın ve Alan iletişim kutusunu açmak için Alan’ı seçin.
- Alan adları listesinden MergeField’ı seçin.
- Alan adı metin kutusuna birleştirme alanı için bir ad girin ve Tamam’a basın.
Bir birleştirme alanı normal bir Microsoft Word alanı olduğundan, Microsoft Word’deki belgenizde alan kodlarını ve sonuçları görüntüleme arasında geçiş yapmak için Alt+F9 klavye kısayolunu kullanabilirsiniz. Alan kodları süslü parantezler arasında görünür.
Basit Posta Birleştirme
Şablonunuzu basit bir e-posta birleştirme işlemi (bölgeler olmadan, Microsoft Word’de bulunan klasik e-posta birleştirme işlemine benzer şekilde) gerçekleştirmek üzere hazırlamak için, veri kaynağından gelen verilerle doldurulmasını istediğiniz yerlere bir veya daha fazla birleştirme alanı eklemeniz yeterlidir.
Dinner Invitation demosuna bir göz atalım. Veri kaynağında tanımlanan bir müşteri listesi için bir mektup oluşturur. Şablon, iki veri kaynağından doldurulan bir dizi birleştirme alanı içerir; başka bir deyişle, iki posta birleştirme işlemi birbiri ardına gerçekleştirilir. İlk olarak, ilk veri kaynağındaki veriler şablona birleştirilir. Bu veri kaynağı yalnızca bir satır içerir çünkü bu, davet eden kişiyle ilgili bilgidir, bu nedenle tüm belge içeriği tekrarlanmaz ve yalnızca uygun alanlar verilerle doldurulur. Ardından ikinci posta birleştirme işlemi yürütülür. Kullandığı veri kaynağı müşterilerle ilgili bilgiler içerir. Tüm şablon her veri satırı için tekrarlanır ve her tekrarlanan kopya, ilgili müşterinin verileriyle doldurulur.
Sonuç olarak, beş adet doldurulmuş, tamamlanmış ve kişiselleştirilmiş davet mektubundan oluşan bir belgeye sahibiz (ilk mektubun bir parçası aşağıda gösterilmektedir):
Gördüğünüz gibi, verileri aşamalı olarak eklemek için aynı şablonla birden fazla birleştirme işlemi gerçekleştirmek mümkün ve bazen yararlıdır. Posta birleştirme motorunun veri kaynağından bir sonraki kaydı seçmesini ve birleştirmeye devam etmesini sağlamak için Word belgesine NEXT alanları ekleyebilirsiniz. Motor bir NEXT alanıyla karşılaştığında, veri kaynağındaki bir sonraki kaydı seçer ve hiçbir içeriği kopyalamadan birleştirmeye devam eder. Bu, posta etiketleri gibi belgeler oluştururken kullanılabilir.
Basit Posta Birleştirme işlemini gerçekleştirecek kod aşağıda verilmiştir:
// Tam örnekler ve veri dosyaları için lütfen https://github.com/aspose-words-cloud/aspose-words-cloud-dotnet adresine gidin.
string MyAppKey = ""; // Get AppKey and AppSID from https://dashboard.aspose.cloud/
string MyAppSid = ""; // Get AppKey and AppSID from https://dashboard.aspose.cloud/
WordsApi wordsApi = new WordsApi(MyAppKey, MyAppSid);
StorageApi storageApi = new StorageApi(MyAppKey, MyAppSid);
var fileName = "DinnerInvitation.docx";
var destFileName = "InviterAdded.docx";
var data = File.ReadAllText(@"c:\Data\" + "Inviter.xml");
string folder = null; // File exists at the root of the storage
// Kaynak belgeyi Cloud Depolamaya yükleyin
PutCreateRequest request = new PutCreateRequest(fileName, File.OpenRead(@"c:\Data\" + fileName), null, null);
storageApi.PutCreate(request);
// Posta Birleştirme İşlemini ilk kez gerçekleştirin
var executeMailMergeRequest = new PostDocumentExecuteMailMergeRequest(fileName, data, folder, destFileName: destFileName, withRegions: false);
var actual = wordsApi.PostDocumentExecuteMailMerge(executeMailMergeRequest);
// Posta Birleştirme İşlemini ikinci kez gerçekleştirin
fileName = destFileName;
destFileName = "FinalDinnerInvitation.docx";
data = File.ReadAllText(@"c:\Data\" + "Clients.xml");
executeMailMergeRequest = new PostDocumentExecuteMailMergeRequest(fileName, data, folder, destFileName: destFileName, withRegions: false);
actual = wordsApi.PostDocumentExecuteMailMerge(executeMailMergeRequest);
Bölgelerle Posta Birleştirme
Belgenin içindeki bölümleri dinamik olarak büyütmek istiyorsanız, bölgelerle posta birleştirmeyi kullanın. Belgede bir posta birleştirme bölgesi belirtmek için, posta birleştirme bölgesinin başlangıcını ve sonunu işaretlemek üzere iki posta birleştirme alanı eklemeniz gerekir. Bir posta birleştirme bölgesinin içinde bulunan tüm belge içeriği, veri kaynağındaki her kayıt için otomatik olarak tekrarlanacaktır.
Bir posta birleştirme bölgesinin başlangıcını işaretlemek için, TableStart:MyTable adlı bir MERGEFIELD ekleyin; burada MyTable, XML veya JSON’daki etikete veya anahtara karşılık gelir. Posta birleştirme bölgesinin sonunu işaretlemek için, TableEnd:MyTable adlı başka bir MERGEFIELD ekleyin. Bu işaretleme alanları arasına, veri kaynağınızın alanlarına karşılık gelen birleştirme alanları yerleştirin. Bu birleştirme alanları, veri kaynağının ilk satırındaki verilerle doldurulacak, ardından tüm bölge tekrarlanacak ve yeni alanlar ikinci satırdaki verilerle doldurulacak ve böyle devam edecektir.
Bir bölgeyi işaretlerken şu basit kuralları izleyin:
- TableStart ve TableEnd alanları belgede aynı bölümün içinde olmalıdır
- Bir tablonun içinde kullanılırsa, TableStart ve TableEnd tabloda aynı satırda olmalıdır
- Posta birleştirme bölgeleri birbirinin içine yerleştirilebilir
- Posta birleştirme bölgeleri iyi biçimlendirilmiş olmalıdır (her zaman aynı tablo adına sahip eşleşen bir TableStart ve TableEnd çifti vardır)
Örnek olarak, Öğe Kataloğu demosuna bir göz atın. İşte posta birleştirme için hazırlanmış bir bölgenin parçası:
TableStart:Item ve TableEnd:Item işaretleme alanlarının her ikisinin de Word tablosunun aynı satırına yerleştirildiğini unutmayın. Posta birleştirmeyi yürüttükten sonra, sonuç şudur:
Bölgelerle Posta Birleştirme işlemini gerçekleştirmek için gereken kod aşağıda verilmiştir:
// Tam örnekler ve veri dosyaları için lütfen https://github.com/aspose-words-cloud/aspose-words-cloud-dotnet adresine gidin.
string MyAppKey = ""; // Get AppKey and AppSID from https://dashboard.aspose.cloud/
string MyAppSid = ""; // Get AppKey and AppSID from https://dashboard.aspose.cloud/
WordsApi wordsApi = new WordsApi(MyAppKey, MyAppSid);
StorageApi storageApi = new StorageApi(MyAppKey, MyAppSid);
var fileName = "Invoice_Template.doc";
var destFileName = "Invoice_Template_out_.doc";
var data = File.ReadAllText(@"c:\Data\" + "CustomerData.xml");
string folder = null; // File exists at the root of the storage
// Giriş belgesini Cloud Depolamaya yükleyin
PutCreateRequest request = new PutCreateRequest(fileName, File.OpenRead(@"c:\Data\" + fileName), null, null);
storageApi.PutCreate(request);
var executeMailMergeRequest = new PostDocumentExecuteMailMergeRequest(fileName, data, folder, destFileName: destFileName, withRegions: true);
var actual = wordsApi.PostDocumentExecuteMailMerge(executeMailMergeRequest);
‘Mustache’ Şablon Sözdizimini kullanarak Posta Birleştirme
Bu sözdizimi, birleştirme alanları yerine düz metin işaretçileri kullanan posta birleştirmeyle birlikte kullanılmak üzere şablonlar oluşturmanıza olanak tanır. Bu işaretçiler şu şekilde görünür: {{ FieldName }}
Nesne.Öznitelik Sözdizimi
Aşağıdaki sözdizimini kullanarak alanların niteliklerini kolayca birleştirebilirsiniz:
{{ Address.Street }}
Bu, aşağıdaki gibi görünen XML verilerinden veri birleştirecektir:
<Order> // <-- Current context is here.
<Number>23</Number>
<Address>
<Street>Nelson Street</Street>
<Suburb>Howick</Suburb>
<City>Auckland</City>
</Address>
<PhoneNumber>543 1234</PhoneNumber>
</Order>
Foreach Blokları
foreach etiketini kullanarak birden fazla kayıttan veri birleştirebilirsiniz. Bu, geleneksel birleştirme alanlarına sahip posta birleştirme bölgelerine benzerdir. Bu tür blokları iç içe yerleştirebilirsiniz.
{{ #foreach Order }}
{{ Number }}
{{ Address.Street }}
{{ #foreach Item }}
{{ Description }} {{ Cost}} {{ Total }}
{{/foreach Item }}
{{ /foreach Order }}
Ayrıca bu alanları karıştırıp IF veya Formül alanları gibi diğer Microsoft Word alanlarının içine yerleştirebilirsiniz.
Koşullu Blok
Aspose.Words Cloud kullanarak IF ifadesiyle posta birleştirmeyi kullanabilirsiniz. IF bloğu yalnızca kendisiyle ilişkili Boole ifadesi doğruysa yürütülür. IF’in sözdizimi aşağıda gösterilmiştir.
{ IF "{{ GENDER }}" = “MALE” “true text” “false text” }
‘Mustache’ Şablonunu kullanarak Posta Birleştirme işlemini gerçekleştirmek için kod aşağıda verilmiştir:
// Tam örnekler ve veri dosyaları için lütfen https://github.com/aspose-words-cloud/aspose-words-cloud-dotnet adresine gidin.
string MyAppKey = ""; // Get AppKey and AppSID from https://dashboard.aspose.cloud/
string MyAppSid = ""; // Get AppKey and AppSID from https://dashboard.aspose.cloud/
WordsApi wordsApi = new WordsApi(MyAppKey, MyAppSid);
StorageApi storageApi = new StorageApi(MyAppKey, MyAppSid);
var fileName = "VendorTemplate.doc";
var destFileName = "VendorTemplate_Out.docx";
string folder = null; // File exists at the root of the storage
var data = File.ReadAllText(@"c:\Data\" + "Vendors.xml");
// Giriş belgesini Cloud Depolamaya yükleyin
PutCreateRequest request = new PutCreateRequest(fileName, File.OpenRead(@"c:\Data\" + fileName), null, null);
storageApi.PutCreate(request);
var postExecuteTemplateRequest = new PostExecuteTemplateRequest(fileName, data, folder, destFileName: destFileName);
var actual = wordsApi.PostExecuteTemplate(postExecuteTemplateRequest);
Posta Birleştirme Sırasında HTML Ekle
Hem executeMailMerge hem de executeTemplate API’leri birleştirme alanına HTML ekleme desteği sağlar. Sadece veri kaynağı dizesindeki HTML karakterlerini kaçırdığınızdan ve aşağıda gösterildiği gibi “format”=“html” özniteliğini kullandığınızdan emin olmanız gerekir:
{
"dataSourceList": {
"contractDS": {
"contractDescription": {
"format":"html",
"htmlText": "<b>Test me 1<br><br><i>Test me 2<br><br><u>Test me 2</u></i></b><br>"
}
}
}
}
Aşağıdaki kod, posta birleştirme sırasında HTML’nin nasıl ekleneceğini gösterir:
// Tam örnekler ve veri dosyaları için lütfen https://github.com/aspose-words-cloud/aspose-words-cloud-dotnet adresine gidin.
using System;
using System.IO;
using Aspose.Words.Cloud.Sdk;
using Aspose.Words.Cloud.Sdk.Model;
using Aspose.Words.Cloud.Sdk.Model.Requests;
namespace Aspose.Words.Cloud.Examples.CSharp
{
public class PopulateMailMergeTemplateWithHTMLData
{
public static void Run()
{
WordsApi wordsApi = new WordsApi(Constants.AppKey, Constants.AppSID);
try
{
string fileName = "template.doc";
string destName = "Out_PostDocumentExecuteMailMergeWithHTMLData.docx";
// Orijinal belgeyi Cloud Depolamaya yükleyin
wordsApi.UploadFile(new UploadFileRequest(File.Open("..\\..\\..\\Resources\\" + fileName, FileMode.Open), fileName, Constants.MYStorage));
string data = File.ReadAllText("..\\..\\..\\Resources\\TestPostDocumentExecuteMailMerge.txt", System.Text.Encoding.UTF8);
ExecuteMailMergeRequest request = new ExecuteMailMergeRequest(fileName, data, null, Constants.MYStorage, null, null, null, null, null, null, destName);
DocumentResponse result = wordsApi.ExecuteMailMerge(request);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}
Posta Birleştirme Sırasında Resim Ekleme
Bir birleştirme alanına resim de ekleyebilirsiniz. Resimlerin ölçek faktörü ‘%’, ‘px’ veya ’’ (orantılı ölçekleme) kullanılarak ayarlanabilir. Posta Birleştirme sırasında resim ekleme kodu aşağıda verilmiştir:
// Tam örnekler ve veri dosyaları için lütfen https://github.com/aspose-words-cloud/aspose-words-cloud-dotnet adresine gidin.
string MyAppKey = ""; // Get AppKey and AppSID from https://dashboard.aspose.cloud/
string MyAppSid = ""; // Get AppKey and AppSID from https://dashboard.aspose.cloud/
WordsApi wordsApi = new WordsApi(MyAppKey, MyAppSid);
StorageApi storageApi = new StorageApi(MyAppKey, MyAppSid);
var fileName = "TestMailMergeWithImages.doc";
var destFileName = "TestMailMergeWithImages_Out.docx";
var data = File.ReadAllText(WordsExamples.PathToDataFiles + @"\DocumentActions\MailMerge\" + "MailMergeData.txt");
string folder = null; // File exists at the root of the storage
// Giriş belgesini Cloud Depolamaya yükleyin
PutCreateRequest request = new PutCreateRequest(fileName, File.OpenRead(WordsExamples.PathToDataFiles + @"\DocumentActions\MailMerge\" + fileName), null, null);
storageApi.PutCreate(request);
var executeMailMergeRequest = new PostDocumentExecuteMailMergeRequest(fileName, data, folder, destFileName: destFileName, withRegions: false);
var actual = wordsApi.PostDocumentExecuteMailMerge(executeMailMergeRequest);
Cloud SDK’ları
Yukarıdaki kod .NET’te olsa da, Aspose.Words Cloud SDK’ları beş farklı dilde mevcuttur: .NET, Java, Ruby, Python ve Node.js. Bu nedenle, Posta Birleştirme API’lerini bu dillerden herhangi birinde rahatlıkla çağırabilirsiniz.