פשוט Mail Merge פעולה

Mail Merge פשוט משמש למילוי השדות Mail Merge בתוך התבנית שלך בנתונים הנדרשים ממקור הנתונים שלך (ייצוג טבלה אחת). אז זה דומה לקלאסיקה Mail Merge ב Microsoft Word.

אתה יכול להוסיף שדה מיזוג אחד או יותר בתבנית שלך ואז לבצע את הפעולה הפשוטה Mail Merge. מומלץ להשתמש בו אם התבנית שלך אינה מכילה אזורי מיזוג.

המגבלה העיקרית בשימוש בסוג זה היא שכל תוכן המסמך יחזור על עצמו עבור כל רשומה במקור הנתונים.

כיצד לבצע פעולה פשוטה Mail Merge

לאחר שהתבנית שלך מוכנה, תוכל להתחיל לבצע את הפעולה הפשוטה Mail Merge. Aspose.Words מאפשר לך לבצע פעולה פשוטה Mail Merge בשיטות שונות Execute המקבלות אובייקטי נתונים שונים כמקור הנתונים.

דוגמת הקוד הבאה מראה כיצד לבצע פעולה פשוטה Mail Merge באמצעות אחת מהשיטות Execute:

// 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");

אתה יכול להבחין בהבדל בין המסמך לפני ביצוע פשוט mail merge:

simple_mail_merge_template-aspose-words-cpp

ואחרי ביצוע פשוט mail merge:

execute_simple_mail_merge-aspose-words-cpp

כיצד ליצור מסמכים ממוזגים מרובים

ב Aspose.Words, הפעולה הסטנדרטית Mail Merge ממלאת רק מסמך אחד בתוכן ממקור הנתונים שלך. לכן, יהיה עליך לבצע את פעולת Mail Merge פעמים רבות כדי ליצור כמה מסמכים ממוזגים כפלט.

דוגמת הקוד הבאה מראה כיצד ליצור כמה מסמכים ממוזגים במהלך פעולה Mail Merge עם 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;
};