Συγχώνευση αλληλογραφίας

Συγχώνευση αλληλογραφίας

Συγχώνευση αλληλογραφίας

Αυτός ο οδηγός δείχνει πώς να εργαστείτε με κωδικούς πεδίων συγχώνευσης αλληλογραφίας και δεδομένα διαμόρφωσης συγχώνευσης αλληλογραφίας στο Aspose.Words FOSS για .NET, και πού βρίσκεται το όριο με την εκτέλεση της συγχώνευσης. Το Aspose.Words FOSS για .NET αναγνωρίζει και ενημερώνει τους κωδικούς πεδίων συγχώνευσης αλληλογραφίας του Word — ADDRESSBLOCK, DATABASE, GREETINGLINE, MERGEFIELD, NEXTIF, και SKIPIF — ως μέρος της μηχανής αξιολόγησης πεδίων της, και μπορεί να διαβάσει τα δεδομένα διαμόρφωσης συγχώνευσης αλληλογραφίας (MailMergeSettings) αποθηκευμένα μέσα σε ένα έγγραφο. Εκτελώντας μια πραγματική συγχώνευση έναντι μιας εξωτερικής πηγής δεδομένων για τη δημιουργία γεμιστών εγγράφων εξόδου — το MailMerge.Execute() workflow που είναι γνώριμο από το εμπορικό προϊόν — είναι not εφαρμόσμένο σε αυτήν την έκδοση; δεν MailMerge υπάρχει κλάση εκτέλεσης στην τρέχουσα επιφάνεια του API.


MERGEFIELD — Ανάγνωση και Τροποποίηση Συμπληρωμάτων Συγχώνευσης

FieldMergeField υλοποιεί το πεδίο MERGEFIELD. FieldName και FieldNameNoPrefix επιστρέφουν το υποκείμενο όνομα στήλης της πηγής δεδομένων στο οποίο είναι δεσμευμένο το πεδίο, TextBefore/TextAfter περιέχουν κυριολεκτικό κείμενο που τυλίγει την ενσωματωμένη τιμή, και IsMapped/IsVerticalFormatting αναφέρουν την αντιστοίχιση πεδίου συγχώνευσης και τις σημαίες διάταξης. Όπως κάθε τύπος πεδίου, υποστηρίζει GetFieldCode(), Update(), Unlink() και Remove().


ADDRESSBLOCK και GREETINGLINE

FieldAddressBlock υλοποιεί το πεδίο ADDRESSBLOCK, με τα FormatAddressOnCountryOrRegion, IncludeCountryOrRegionName, ExcludedCountryOrRegionName, NameAndAddressFormat και LanguageId να ελέγχουν τον τρόπο μορφοποίησης της διεύθυνσης του παραλήπτη. FieldGreetingLine υλοποιεί το GREETINGLINE, με τα AlternateText, NameFormat και LanguageId να ελέγχουν το κείμενο χαιρετισμού.


Πεδίο DATABASE

FieldDatabase υλοποιεί το πεδίο DATABASE, εκθέτοντας τα στοιχεία σύνδεσης που αποθηκεύονται στο πεδίο: Connection, FileName, Query, TableFormat, InsertHeadings, InsertOnceOnMailMerge, FirstRecord και LastRecord. Για να παρέχετε αποτελέσματα ερωτήματος όταν αυτό το πεδίο ενημερώνεται, υλοποιήστε το IFieldDatabaseProvider και τη μέθοδο GetQueryResult(fileName, connection, query, field), στη συνέχεια εκχωρήστε το στο Document.FieldOptions.FieldDatabaseProvider πριν καλέσετε το Update(). Η ιδιότητα Connection πρέπει να οριστεί — χωρίς αυτήν, το Update() δεν έχει πηγή δεδομένων για ερώτημα.


Πεδία Συγχώνευσης υπό όρους — NEXTIF και SKIPIF

FieldNextIf και FieldSkipIf υλοποιούν τα πεδία NEXTIF και SKIPIF, το καθένα εκθέτοντας τα LeftExpression, ComparisonOperator και RightExpression για τη συνθήκη ελέγχου. Το Document.FieldOptions.ComparisonExpressionEvaluator (ένα IComparisonExpressionEvaluator) μπορεί να παρακάμψει τον τρόπο αξιολόγησης αυτών των εκφράσεων υπό όρους.


Μεγέθυνση Πεδίου Εικόνας Συγχώνευσης

MergeFieldImageDimension αντιπροσωπεύει ένα πλάτος ή ύψος για μια εικόνα που εισάγεται μέσω πεδίου εικόνας συγχώνευσης, κατασκευασμένο ως new MergeFieldImageDimension(value) (σε σημεία) ή new MergeFieldImageDimension(value, unit) με ρητό MergeFieldImageDimensionUnit (Point ή Percent). Οι ιδιότητες Value και Unit του είναι και οι δύο εγγράψιμες.


Τι περιλαμβάνεται στο πεδίο εφαρμογής και τι όχι

Document.MailMergeSettings επιστρέφει ένα MailMergeSettings αντικείμενο που μοντελοποιεί τη διαμόρφωση συγχώνευσης αλληλογραφίας, το OOXML παραμένει μέσα σε ένα έγγραφο — DataSource, ConnectString, Query, MainDocumentType, DataType, Destination, CheckErrors, και τις ρυθμίσεις του Office Data Source Object (ODSO) μέσω OdsoFieldMapData/OdsoRecipientData συλλογών. Αυτή είναι η διαμόρφωση data που φέρει το έγγραφο, όχι μια ζωντανή σύνδεση: ανάγνωση και εγγραφή MailMergeSettings δεν συνδέεται με βάση δεδομένων, λογιστικό φύλλο ή λίστα διευθύνσεων, και αυτή η έκδοση δεν διαθέτει MailMerge κλάση εκτέλεσης για να εκτελέσει μια συγχώνευση και να δημιουργήσει συμπληρωμένα έγγραφα εξόδου από αυτήν. Αυτό που υποστηρίζει αυτή η έκδοση είναι το επίπεδο πεδίου από πάνω: αναγνώριση, ανάγνωση, ενημέρωση και τροποποίηση των κωδικών πεδίου συγχώνευσης καθαυτών μέσα σε ένα ενιαίο έγγραφο μέσω της μηχανής αξιολόγησης πεδίων.


Συμβουλές και Καλές Πρακτικές

  • Αντιμετωπίστε το MailMergeSettings ως μεταδεδομένα εγγράφου που μπορείτε να διαβάσετε και να μεταφέρετε, όχι ως API για σύνδεση με εξωτερικά δεδομένα — δεν υπάρχει μηχανή εκτέλεσης πίσω από αυτό σε αυτήν την έκδοση.
  • Πάντα ορίστε το FieldDatabase.Connection πριν καλέσετε το Update() σε ένα πεδίο DATABASE, διαφορετικά η ενημέρωση δεν θα έχει τίποτα για να ερωτήσει.
  • Εφαρμόστε το IFieldDatabaseProvider μία φορά και εκχωρήστε το μέσω Document.FieldOptions.FieldDatabaseProvider για να κεντρικοποιήσετε τον τρόπο με τον οποίο όλα τα πεδία DATABASE σε ένα έγγραφο επιλύουν τα δεδομένα τους.
  • Χρησιμοποιήστε το FieldMergeField.FieldName για να διαβάσετε σε ποια στήλη πηγής δεδομένων είναι δεσμευμένο ένα MERGEFIELD πριν αποφασίσετε πώς θα το επεξεργαστείτε προγραμματιστικά.

Κοινά ζητήματα

ΠρόβλημαΑιτίαΔιόρθωση
FieldDatabase.Update() δεν επιστρέφει δεδομέναConnection δεν έχει οριστεί, ή δεν υπάρχει καταχωρημένο IFieldDatabaseProviderΟρίστε Connection, και εκχωρήστε Document.FieldOptions.FieldDatabaseProvider πριν από την ενημέρωση
Αναμενόταν ένα MailMerge.Execute()-στυλ APIΗ εκτέλεση συγχώνευσης έναντι εξωτερικής πηγής δεδομένων δεν έχει υλοποιηθεί σε αυτήν την έκδοση FOSSΕργαστείτε απευθείας με τις κλάσεις πεδίων συγχώνευσης (FieldMergeField, FieldDatabase, κ.λπ.) σε ένα μόνο έγγραφο, ή χρησιμοποιήστε το εμπορικό Aspose.Words για .NET για πλήρη εκτέλεση συγχώνευσης
Οι συνθήκες NEXTIF/SKIPIF αξιολογούνται απροσδόκηταΗ προεπιλεγμένη αξιολόγηση της έκφρασης σύγκρισης δεν ταιριάζει με την αναμενόμενη σημασιολογίαΥλοποιήστε το IComparisonExpressionEvaluator και αντιστοιχίστε το στο Document.FieldOptions.ComparisonExpressionEvaluator

FAQ

Μπορώ να εκτελέσω συγχώνευση αλληλογραφίας με ένα CSV ή βάση δεδομένων σε αυτήν την έκδοση;

Όχι. Αυτή η έκδοση υλοποιεί τους κωδικούς πεδίων συγχώνευσης αλληλογραφίας και το μοντέλο δεδομένων διαμόρφωσης MailMergeSettings, αλλά δεν υπάρχει κλάση εκτέλεσης MailMerge για σύνδεση με εξωτερική πηγή δεδομένων και δημιουργία συμπληρωμένων εγγράφων.

Τι μπορώ πραγματικά να κάνω με τα πεδία MERGEFIELD, λοιπόν;

Μπορείτε να τα διαβάσετε και να τα τροποποιήσετε απευθείας — FieldMergeField.FieldName για το όνομα της δεσμευμένης στήλης, TextBefore/TextAfter για το κυριολεκτικό κείμενο που το περιβάλλει, και Update()/Unlink()/Remove() όπως οποιοδήποτε άλλο πεδίο — μέσα στο τρέχον έγγραφο.

Είναι το MailMergeSettings άχρηστο χωρίς εκτέλεση συγχώνευσης;

Όχι — παραμένει χρήσιμο για την ανάγνωση ή την κυκλική επεξεργασία της αποθηκευμένης ρύθμισης συγχώνευσης αλληλογραφίας ενός εγγράφου, όπως DataSource, Query ή MainDocumentType, ακόμη και αν αυτή η έκδοση δεν ενεργεί πάνω σε αυτή τη ρύθμιση για να εκτελέσει μια συγχώνευση.

Πώς μπορώ να παρέχω δεδομένα για ένα πεδίο DATABASE;

Εφαρμόστε το IFieldDatabaseProvider.GetQueryResult(fileName, connection, query, field) και αναθέστε την υλοποίησή σας στο Document.FieldOptions.FieldDatabaseProvider πριν καλέσετε το Update().

Πώς μπορώ να ελέγξω το μέγεθος μιας εικόνας που εισάγεται από ένα πεδίο συγχώνευσης εικόνας;

Χρησιμοποιήστε το MergeFieldImageDimension, που κατασκευάζεται με μια τιμή σε σημεία ή μια τιμή συν ένα σαφές MergeFieldImageDimensionUnit (Point ή Percent).


API Reference Περίληψη

Κλάση / ΜέθοδοςΠεριγραφή
FieldMergeFieldMERGEFIELD πεδίο: FieldName, FieldNameNoPrefix, TextBefore, TextAfter, IsMapped
FieldAddressBlockADDRESSBLOCK πεδίο: ιδιότητες μορφοποίησης διεύθυνσης
FieldGreetingLineGREETINGLINE πεδίο: ιδιότητες μορφοποίησης χαιρετισμού
FieldDatabaseDATABASE πεδίο: Connection, Query, FileName, TableFormat
IFieldDatabaseProviderΠαρέχει τα αποτελέσματα ερωτήματος για πεδία DATABASE μέσω GetQueryResult()
FieldNextIf / FieldSkipIfNEXTIF / SKIPIF προϋποθετικά πεδία συγχώνευσης
MergeFieldImageDimensionΠλάτος/ύψος για εικόνες πεδίου συγχώνευσης εικόνας
Document.MailMergeSettingsΑποθηκευμένα δεδομένα διαμόρφωσης mail-merge (όχι ενεργή σύνδεση δεδομένων)

Δείτε επίσης

 Ελληνικά