ง่าย 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;
};