מיזוג דואר הוא תכונה של Microsoft Word ליצירה מהירה וקלה של מסמכים כמו מכתבים, תוויות ומעטפות. Aspose.Words Cloud לוקח את מיזוג הדואר הסטנדרטי ומקדם אותו צעדים רבים קדימה, והופך אותו לפתרון דיווח מלא המאפשר לך להפיק מסמכים מורכבים עוד יותר כגון דוחות, קטלוגים, מלאי וחשבוניות. היתרונות של פתרון הדיווח Aspose.Words Cloud הם:
- עיצוב דוחות ב-Microsoft Word באמצעות שדות מיזוג דואר סטנדרטיים
- הגדר אזורים במסמך שגדלים, כגון פירוט שורות של הזמנה
- הוסף תמונות במהלך מיזוג דואר
- הכנס HTML במהלך מיזוג דואר
שלבים בסיסיים
השלבים לביצוע מיזוג דואר הם די קלים. ראשית, אתה משתמש ב-Microsoft Word כדי ליצור ולעצב מסמך Word, הנקרא בדרך כלל תבנית. שימו לב שהמסמך לא חייב להיות תבנית Microsoft Word (.dot), הוא יכול להיות מסמך doc רגיל. אתה מוסיף כמה שדות מיוחדים הנקראים מיזוג שדות לתוך התבנית במקומות שבהם אתה רוצה שנתונים ממקור הנתונים שלך יוכנסו מאוחר יותר. ואז עם Aspose.Words REST API, אתה מבצע פעולת מיזוג דואר. פעולת מיזוג הדואר תיקח נתונים ממקור הנתונים שלך ותמזג אותם לתוך המסמך.
אתה יכול גם להגדיר אזורי מיזוג שניתנים לחזרה במסמך או להוסיף שדות מיזוג מיוחדים המאפשרים לך להוסיף תוכן אחר כגון תמונות. בהתאם לאופן שבו אתה מגדיר שדות מיזוג דואר ואזורים הניתנים לחזרה בתוך המסמך, המסמך יגדל כדי להכיל מספר רשומות במקור הנתונים שלך. אם אינך משתמש באזורי מיזוג דואר, מיזוג הדואר יהיה דומה למיזוג דואר של Microsoft Word וכל תוכן המסמך יחזור על עצמו עבור כל רשומה במקור הנתונים. באמצעות אזורי מיזוג דואר שניתנים לחזרה, ניתן לייעד חלקים בתוך מסמך שיחזרו על כל רשומה במקור הנתונים. לדוגמה, אם תסמן שורת טבלה כאזור שניתן לחזור עליו, שורת הטבלה הזו תחזור על עצמה, מה שיגרום לטבלה לגדול באופן דינמי כדי להכיל את כל הנתונים שלך.
הכן מסמך
לפני שתבצע מיזוג דואר, עליך להכין את תבנית המסמך. עליך להוסיף שדות מיזוג שיוחלפו בערכים ממקור הנתונים שלך.
הוספת שדות מיזוג למסמך
כדי להוסיף שדות מיזוג למסמך:
- פתח את המסמך שלך ב- Microsoft Word.
- במסמך, לחץ על המקום שבו ברצונך למקם שדה מיזוג.
- פתח את תפריט הוספה ובחר שדה כדי לפתוח את תיבת הדו-שיח שדה.
- מרשימת שמות השדות, בחר MergeField.
- בתיבת הטקסט שם שדה, הזן שם עבור שדה המיזוג ולחץ על אישור.
מכיוון ששדה מיזוג הוא שדה רגיל של Microsoft Word, אתה יכול לעבור בין הצגת קודי שדות ותוצאות במסמך שלך ב-Microsoft Word באמצעות קיצור המקשים Alt+F9. קודי שדות מופיעים בין סוגרים מסולסלים.
מיזוג דואר פשוט
על מנת להכין את התבנית שלך לביצוע מיזוג דואר פשוט (ללא אזורים, בדומה למיזוג הדואר הקלאסי הזמין ב-Microsoft Word) עליך פשוט להכניס שדה מיזוג אחד או יותר במקומות שבהם ברצונך שיאוכלס בנתונים ממקור הנתונים .
תן לנו להסתכל על ההדגמה של הזמנה לארוחת ערב. זה יוצר מכתב עבור רשימה של לקוחות המוגדרים במקור הנתונים. התבנית מכילה מספר שדות מיזוג המאוכלסים משני מקורות נתונים; במילים אחרות, שני מיזוגי דואר מבוצעים בזה אחר זה. ראשית, נתונים ממקור הנתונים הראשון מוזגים לתוך התבנית. מקור נתונים זה מכיל שורה אחת בלבד מכיוון שמדובר במידע על המזמין, כך שכל תוכן המסמך אינו חוזר על עצמו ורק השדות המתאימים ממולאים בנתונים. לאחר מכן מבוצעת פעולת מיזוג הדואר השנייה. מקור הנתונים שהוא משתמש בו מכיל מידע על הלקוחות. כל התבנית חוזרת על עצמה עבור כל שורת נתונים, וכל עותק חוזר מאוכלס בנתוני הלקוח התואם.
כתוצאה מכך, יש לנו מסמך המורכב מחמישה מכתבי הזמנה מלאים, מלאים ומותאמים אישית (שבר של המכתב הראשון מוצג להלן):
כפי שניתן לראות, ניתן, ולפעמים שימושי, לבצע יותר מפעולת מיזוג אחת עם אותה תבנית כדי להוסיף נתונים בשלבים. ניתן להוסיף שדות NEXT במסמך Word כדי לגרום למנוע מיזוג הדואר לבחור את הרשומה הבאה ממקור הנתונים ולהמשיך במיזוג. כאשר המנוע נתקל בשדה NEXT, הוא פשוט בוחר את הרשומה הבאה במקור הנתונים וממשיך להתמזג מבלי להעתיק תוכן כלשהו. זה יכול לשמש בעת יצירת מסמכים כגון תוויות דיוור.
הקוד לביצוע מיזוג דואר פשוט ניתן להלן:
// לדוגמאות מלאות וקבצי נתונים, נא עבור אל https://github.com/aspose-words-cloud/aspose-words-cloud-dotnet
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
// העלה מסמך מקור ל-Cloud Storage
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: false);
var actual = wordsApi.PostDocumentExecuteMailMerge(executeMailMergeRequest);
// בצע פעולת מיזוג דואר בפעם השנייה
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);
מיזוג דואר עם אזורים
אם ברצונך להגדיל באופן דינמי חלקים בתוך המסמך, השתמש במיזוג דואר עם אזורים. כדי לציין אזור מיזוג דואר במסמך, עליך להוסיף שני שדות מיזוג דואר כדי לסמן את ההתחלה והסוף של אזור מיזוג הדואר. כל תוכן המסמך שנכלל בתוך אזור מיזוג דואר יחזור על עצמו אוטומטית עבור כל רשומה במקור הנתונים.
כדי לסמן את ההתחלה של אזור מיזוג דואר, הכנס MERGEFIELD עם השם TableStart:MyTable, כאשר MyTable מתאים לתג או למפתח ב-XML או JSON בהתאמה. כדי לסמן את סוף אזור מיזוג הדואר, הכנס עוד MERGEFIELD עם השם TableEnd:MyTable. בין שדות סימון אלה, מקם שדות מיזוג התואמים לשדות של מקור הנתונים שלך. שדות מיזוג אלו יאוכלסו בנתונים מהשורה הראשונה של מקור הנתונים, לאחר מכן כל האזור יחזור על עצמו, והשדות החדשים יאוכלסו בנתונים מהשורה השנייה וכן הלאה.
פעל לפי הכללים הפשוטים הבאים בעת סימון אזור:
- שדות TableStart ו-TableEnd חייבים להיות בתוך אותו מקטע במסמך
- אם משתמשים בתוך טבלה, TableStart ו-TableEnd חייבים להיות בתוך אותה שורה בטבלה
- ניתן לקנן אזורי מיזוג דואר זה בתוך זה
- אזורי מיזוג דואר צריכים להיות מעוצבים היטב (תמיד יש זוג של TableStart ו-TableEnd תואמים עם אותו שם טבלה)
כדוגמה, תסתכל על ההדגמה של קטלוג הפריטים. הנה קטע של אזור שהוכן למיזוג דואר:
שימו לב ששני שדות הסימון TableStart:Item ו-TableEnd:Item ממוקמים בתוך אותה שורה של טבלת Word. לאחר ביצוע מיזוג הדואר, הנה התוצאה:
הקוד לביצוע מיזוג דואר עם אזורים ניתן להלן:
// לדוגמאות מלאות וקובצי נתונים, נא עבור אל https://github.com/aspose-words-cloud/aspose-words-cloud-dotnet
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
// העלה מסמך קלט ל-Cloud Storage
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);
מיזוג דואר באמצעות תחביר תבנית ‘שפם’
תחביר זה מאפשר לך ליצור תבניות לשימוש עם מיזוג דואר המשתמשות בסמני טקסט רגיל במקום בשדות מיזוג. סמנים אלה נראים כך: {{ FieldName }}
תחביר Object.Attribute
אתה יכול בקלות למזג תכונות של שדות באמצעות התחביר הבא:
{{ Address.Street }}
פעולה זו תמזג נתונים מנתוני XML שנראים כך:
<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 Blocks
אתה יכול למזג נתונים מרשומות מרובות באמצעות התג foreach. זה דומה לאזורי מיזוג דואר עם שדות מיזוג קונבנציונליים. אתה יכול לקנן בלוקים כאלה.
{{ #foreach Order }}
{{ Number }}
{{ Address.Street }}
{{ #foreach Item }}
{{ Description }} {{ Cost}} {{ Total }}
{{/foreach Item }}
{{ /foreach Order }}
אתה יכול גם לערבב שדות אלה ולמקם אותם בתוך שדות אחרים של Microsoft Word, כגון שדות IF או נוסחה.
בלוק מותנה
אתה יכול להשתמש במיזוג דואר עם הצהרת IF באמצעות Aspose.Words Cloud. בלוק IF מופעל רק אם הביטוי הבוליאני המשויך אליו נכון. התחביר של IF מוצג להלן.
{ IF "{{ GENDER }}" = “MALE” “true text” “false text” }
הקוד לביצוע מיזוג דואר באמצעות תבנית ‘שפם’ ניתן להלן:
// לדוגמאות מלאות וקבצי נתונים, נא עבור אל https://github.com/aspose-words-cloud/aspose-words-cloud-dotnet
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");
// העלה מסמך קלט ל-Cloud Storage
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);
הכנס HTML במהלך מיזוג דואר
גם ממשקי API של executeMailMerge וגם executeTemplate מספקים תמיכה להכנסת HTML בשדה מיזוג. אתה רק צריך לוודא שאתה escape תווי HTML במחרוזת מקור הנתונים ולהשתמש בתכונה “format”=“html” כפי שמוצג להלן:
{
"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>"
}
}
}
}
הקוד הבא מראה כיצד להוסיף HTML במהלך מיזוג דואר:
// לדוגמאות מלאות וקבצי נתונים, נא עבור אל https://github.com/aspose-words-cloud/aspose-words-cloud-dotnet
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";
// העלה מסמך מקורי ל-Cloud Storage
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());
}
}
}
}
הוסף תמונות במהלך מיזוג דואר
ניתן גם להוסיף תמונות בשדה מיזוג. ניתן להגדיר גורם קנה מידה עבור תמונות באמצעות ‘%’, ‘px’ או ’’ (קנה מידה פרופורציונלי).הקוד להוספת תמונות במהלך מיזוג דואר ניתן להלן:
// לדוגמאות מלאות וקבצי נתונים, נא עבור אל https://github.com/aspose-words-cloud/aspose-words-cloud-dotnet
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
// העלה מסמך קלט ל-Cloud Storage
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);
ערכות SDK בענן
למרות שהקוד לעיל נמצא ב-.NET, Aspose.Words Cloud SDKs זמינים בחמש שפות שונות: .NET, Java, Ruby, Python ו-Node.js. לכן, אתה יכול לקרוא בנוחות ממשקי API למיזוג דואר בכל אחת מהשפות הללו.