Eenvoudige Mail Merge Bewerking

Een eenvoudige Mail Merge wordt gebruikt om de Mail Merge velden in uw sjabloon te vullen met de vereiste gegevens uit uw gegevensbron (weergave van één tabel). Dus het is vergelijkbaar met de klassieke Mail Merge in Microsoft Word.

U kunt een of meer samenvoegvelden toevoegen aan uw sjabloon en vervolgens de eenvoudige bewerking Mail Merge uitvoeren. Het wordt aanbevolen om het te gebruiken als uw sjabloon geen samenvoeggebieden bevat.

De belangrijkste beperking van het gebruik van dit type is dat de volledige documentinhoud voor elke record in de gegevensbron wordt herhaald.

Een eenvoudige Mail Merge - bewerking uitvoeren

Zodra uw sjabloon klaar is, kunt u beginnen met het uitvoeren van de eenvoudige Mail Merge - bewerking. Met Aspose.Words kunt u een eenvoudige Mail Merge - bewerking uitvoeren met behulp van verschillende Execute - methoden die verschillende gegevensobjecten als gegevensbron accepteren.

Het volgende codevoorbeeld laat zien hoe u een eenvoudige Mail Merge - bewerking uitvoert met behulp van een van de Execute - methode:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
builder->InsertField(u" MERGEFIELD CustomerName ");
builder->InsertParagraph();
builder->InsertField(u" MERGEFIELD Item ");
builder->InsertParagraph();
builder->InsertField(u" MERGEFIELD Quantity ");
auto boxHelper = [](const char16_t* value) { return System::ObjectExt::Box<String>(value); };
// Fill the fields in the document with user data.
doc->get_MailMerge()->Execute(
MakeArray<String>({u"CustomerName", u"Item", u"Quantity"}),
MakeArray<SharedPtr<System::Object>>(
{ boxHelper(u"John Doe"), boxHelper(u"Hawaiian"), boxHelper(u"2")}));
doc->Save(ArtifactsDir + u"BaseOperations.SimpleMailMerge.docx");

U kunt het verschil tussen het document opmerken voordat u simple mail mergeuitvoert:

simple_mail_merge_template-aspose-words-cpp

En na het uitvoeren van simple mail merge:

execute_simple_mail_merge-aspose-words-cpp

Hoe meerdere samengevoegde documenten te maken

In Aspose.Words vult de standaard Mail Merge - bewerking slechts één document met inhoud uit uw gegevensbron. U moet de bewerking Mail Merge dus vele malen uitvoeren om een paar samengevoegde documenten als uitvoer te maken.

Het volgende codevoorbeeld laat zien hoe u een paar samengevoegde documenten kunt genereren tijdens een Mail Merge - bewerking met SQLiteCpp:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
void MultipleDocumentsMailMerge()
{
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
builder->InsertField(u" MERGEFIELD FullName ");
builder->InsertParagraph();
builder->InsertField(u" MERGEFIELD Address ");
// Fill the fields in the document with user data.
SQLite::Database database{ (std::string)(DatabaseDir + u"customers.db3") };
SQLite::Statement query{ database, "SELECT * FROM Customers" };
auto dataSource = MakeObject<CustomersRowMailMergeDataSource>(query);
int32_t counter = 1;
while (query.executeStep())
{
dataSource->Reset();
doc->get_MailMerge()->Execute(dataSource);
doc->Save(ArtifactsDir + u"BaseOperations.MultipleDocumentsMailMerge_" + counter++ + u".docx");
}
}
class CustomersRowMailMergeDataSource : public MailMerging::IMailMergeDataSource
{
public:
CustomersRowMailMergeDataSource(SQLite::Statement& query) : mQuery(query) {}
String get_TableName() override
{
return u"Customers";
}
bool GetValue(String fieldName, SharedPtr<Object>& fieldValue) override
{
auto boxHelper = [](const std::string& value) { return System::ObjectExt::Box<String>(String::FromUtf8(value)); };
if (fieldName == u"FullName")
{
fieldValue = boxHelper(mQuery.getColumn(1).getString());
return true;
}
if (fieldName == u"Address")
{
fieldValue = boxHelper(mQuery.getColumn(2).getString());
return true;
}
fieldValue.reset();
return false;
}
bool MoveNext() override
{
if (!isInitialized)
{
isInitialized = true;
return true;
}
return false;
}
SharedPtr<IMailMergeDataSource> GetChildDataSource(String tableName) override
{
return nullptr;
}
void Reset()
{
isInitialized = false;
}
private:
SQLite::Statement& mQuery;
bool isInitialized = false;
};