Η συγχώνευση αλληλογραφίας είναι μια δυνατότητα του 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.
- Στο πλαίσιο κειμένου Όνομα πεδίου, πληκτρολογήστε ένα όνομα για το πεδίο συγχώνευσης και πατήστε OK.
Δεδομένου ότι ένα πεδίο συγχώνευσης είναι ένα κανονικό πεδίο του Microsoft Word, μπορείτε να κάνετε εναλλαγή μεταξύ εμφάνισης κωδικών πεδίων και αποτελεσμάτων στο έγγραφό σας στο Microsoft Word χρησιμοποιώντας τη συντόμευση πληκτρολογίου Alt+F9. Οι κωδικοί πεδίου εμφανίζονται ανάμεσα σε σγουρά στηρίγματα.
Απλή συγχώνευση αλληλογραφίας
Για να προετοιμάσετε το πρότυπό σας για να εκτελέσετε μια απλή συγχώνευση αλληλογραφίας (χωρίς περιοχές, παρόμοια με την κλασική συγχώνευση αλληλογραφίας που είναι διαθέσιμη στο Microsoft Word), θα πρέπει απλώς να εισαγάγετε ένα ή περισσότερα πεδία συγχώνευσης στα σημεία που θέλετε να συμπληρωθούν με δεδομένα από την προέλευση δεδομένων .
Ας ρίξουμε μια ματιά στο demo του Dinner Invitation. Δημιουργεί ένα γράμμα για μια λίστα πελατών που ορίζονται στην πηγή δεδομένων. Το πρότυπο περιέχει έναν αριθμό πεδίων συγχώνευσης που συμπληρώνονται από δύο πηγές δεδομένων. Με άλλα λόγια, δύο συγχωνεύσεις αλληλογραφίας εκτελούνται η μία μετά την άλλη. Αρχικά, τα δεδομένα από την πρώτη πηγή δεδομένων συγχωνεύονται στο πρότυπο. Αυτή η προέλευση δεδομένων περιέχει μόνο μία σειρά, επειδή πρόκειται για πληροφορίες σχετικά με τον προσκαλούντα, επομένως ολόκληρο το περιεχόμενο του εγγράφου δεν επαναλαμβάνεται και μόνο τα κατάλληλα πεδία συμπληρώνονται με δεδομένα. Στη συνέχεια εκτελείται η δεύτερη λειτουργία συγχώνευσης αλληλογραφίας. Η πηγή δεδομένων που χρησιμοποιεί περιέχει πληροφορίες για τους πελάτες. Ολόκληρο το πρότυπο επαναλαμβάνεται για κάθε σειρά δεδομένων και κάθε επαναλαμβανόμενο αντίγραφο συμπληρώνεται με τα δεδομένα του αντίστοιχου πελάτη.
Ως αποτέλεσμα, έχουμε ένα έγγραφο που αποτελείται από πέντε συμπληρωμένες, πλήρεις και εξατομικευμένες επιστολές πρόσκλησης (ένα απόσπασμα της πρώτης φαίνεται παρακάτω):
Όπως μπορείτε να δείτε, είναι δυνατό, και μερικές φορές χρήσιμο, να εκτελέσετε περισσότερες από μία λειτουργίες συγχώνευσης με το ίδιο πρότυπο για να προσθέσετε δεδομένα σταδιακά. Μπορείτε να εισαγάγετε ΕΠΟΜΕΝΑ πεδία στο έγγραφο του 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 = "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);
Συγχώνευση αλληλογραφίας με χρήση της σύνταξης προτύπου ‘Mustache’
Αυτή η σύνταξη σάς επιτρέπει να δημιουργείτε πρότυπα για χρήση με τη συγχώνευση αλληλογραφίας που χρησιμοποιούν δείκτες απλού κειμένου αντί για πεδία συγχώνευσης. Αυτοί οι δείκτες μοιάζουν με αυτό: {{ Όνομα πεδίου }}
Αντικείμενο.Σύνταξη χαρακτηριστικών
Μπορείτε εύκολα να συγχωνεύσετε χαρακτηριστικά πεδίων χρησιμοποιώντας την ακόλουθη σύνταξη:
{{ 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
Μπορείτε να συγχωνεύσετε δεδομένα από πολλές εγγραφές χρησιμοποιώντας την ετικέτα foreach. Αυτό είναι παρόμοιο με τις περιοχές συγχώνευσης αλληλογραφίας με συμβατικά πεδία συγχώνευσης. Μπορείτε να τοποθετήσετε τέτοια μπλοκ.
{{ #foreach Order }}
{{ Number }}
{{ Address.Street }}
{{ #foreach Item }}
{{ Description }} {{ Cost}} {{ Total }}
{{/foreach Item }}
{{ /foreach Order }}
Μπορείτε επίσης να αναμίξετε αυτά τα πεδία και να τα τοποθετήσετε μέσα σε άλλα πεδία του Microsoft Word, όπως πεδία IF ή Formula.
Μπλοκ υπό όρους
Μπορείτε να χρησιμοποιήσετε τη συγχώνευση αλληλογραφίας με τη δήλωση IF χρησιμοποιώντας το Aspose.Words Cloud. Το μπλοκ IF εκτελείται μόνο εάν η Boolean έκφραση που σχετίζεται με αυτό είναι αληθής. Η σύνταξη του IF φαίνεται παρακάτω.
{ IF "{{ GENDER }}" = “MALE” “true text” “false text” }
Ο κώδικας για την εκτέλεση συγχώνευσης αλληλογραφίας χρησιμοποιώντας το πρότυπο ‘Mustache’ δίνεται παρακάτω:
// Για πλήρη παραδείγματα και αρχεία δεδομένων, μεταβείτε στη διεύθυνση 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 κατά τη συγχώνευση αλληλογραφίας
Και τα δύο executeMailMerge και executeTemplate API παρέχουν υποστήριξη για την εισαγωγή HTML σε ένα πεδίο συγχώνευσης. Απλώς πρέπει να βεβαιωθείτε ότι διαφεύγετε από χαρακτήρες 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);
Cloud SDK
Αν και ο παραπάνω κώδικας είναι σε .NET, τα Aspose.Words Cloud SDK είναι διαθέσιμα σε πέντε διαφορετικές γλώσσες: .NET, Java, Ruby, Python και Node.js. Επομένως, μπορείτε εύκολα να καλέσετε τα API συγχώνευσης αλληλογραφίας σε οποιαδήποτε από αυτές τις γλώσσες.