Αυτό το άρθρο εξηγεί πώς να εκτελέσετε συγχώνευση αλληλογραφίας στο MS Word με C#. Περιλαμβάνει λεπτομέρειες για τη ρύθμιση του IDE, μια λίστα βημάτων και έναν ολοκληρωμένο δείγμα κώδικα που επιδεικνύει πώς να εκτελέσετε συγχώνευση αλληλογραφίας στο Word με C#. Όλα τα απαιτούμενα αρχεία δημιουργούνται από αυτόν τον κώδικα, οπότε δεν χρειάζεται κανένα αρχείο εισόδου ή δεδομένα για την εκτέλεσή του.
Βήματα για τη δημιουργία συγχώνευσης αλληλογραφίας στο Word με C#
- Ρυθμίστε το IDE για να χρησιμοποιήσετε το Aspose.Words for .NET για τη συγχώνευση αλληλογραφίας
- Δημιουργήστε ένα αρχείο προτύπου συγχώνευσης αλληλογραφίας χρησιμοποιώντας την κλάση DocumentBuilder
- Δημιουργήστε ή φορτώστε ένα δείγμα αρχείου XML που περιέχει δεδομένα εισόδου για το πρότυπο συγχώνευσης
- Δημιουργήστε ένα DataSet από το φορτωμένο αρχείο XML
- Καλέστε τη MailMerge.Execute() για το έγγραφο χρησιμοποιώντας τον παραπάνω πίνακα δεδομένων
- Αποθηκεύστε το αρχείο Word εξόδου με ξεχωριστή σελίδα για κάθε εγγραφή στον πίνακα
Αυτά τα βήματα εξηγούν τη διαδικασία συγχώνευσης αλληλογραφίας στο MS Word με C#. Πρώτα, δημιουργήστε ένα δείγμα προτύπου αναφοράς μαθητή, δημιουργήστε ένα δείγμα αρχείου XML με δεδομένα αναφοράς μαθητή και δημιουργήστε έναν πίνακα δεδομένων χρησιμοποιώντας αυτά τα δεδομένα XML. Καλέστε τη μέθοδο MailMerge.Execute()
παρέχοντας το όνομα του πίνακα-στόχου στο DataSet και αποθηκεύστε το αρχείο Word εξόδου στον δίσκο.
Κώδικας για τη δημιουργία συγχώνευσης αλληλογραφίας στο MS Word με C#
using System.Data; | |
using Aspose.Words; | |
class Program | |
{ | |
static void Main() | |
{ | |
// Apply license | |
License license = new License(); | |
license.SetLicense("license.lic"); | |
// Create a student report template | |
Document document = CreateStudentReportTemplate(); | |
document.Save("ReportTemplate.docx"); | |
Console.WriteLine("Report Template generated successfully."); | |
// Generate an XML file with sample student data | |
string XmlFileName = GenerateSampleStudentData(); | |
Console.WriteLine($"Sample XML file '{XmlFileName}' has been created."); | |
// Read the XML data into a DataSet | |
DataSet studentDataset = new DataSet(); | |
studentDataset.ReadXml(XmlFileName); | |
// Perform mail merge using the dataset | |
Document doc = new Document("ReportTemplate.docx"); | |
doc.MailMerge.Execute(studentDataset.Tables["Student"]); | |
// Save the final report | |
doc.Save("FinalReports.docx"); | |
Console.WriteLine("Mail merge completed. Output saved as 'FinalReports.docx'."); | |
} | |
static Document CreateStudentReportTemplate() | |
{ | |
// Create a new document using DocumentBuilder | |
DocumentBuilder builder = new DocumentBuilder(); | |
// Insert student name fields | |
builder.InsertField("MERGEFIELD StudentFirstName \\* MERGEFORMAT"); | |
builder.InsertField("MERGEFIELD StudentLastName \\* MERGEFORMAT"); | |
builder.InsertParagraph(); | |
// Insert academic details | |
builder.InsertField("MERGEFIELD Subject \\* MERGEFORMAT"); | |
builder.InsertBreak(BreakType.LineBreak); | |
builder.InsertField("MERGEFIELD MarksObtained \\* MERGEFORMAT"); | |
builder.InsertBreak(BreakType.LineBreak); | |
builder.InsertField("MERGEFIELD TotalMarks \\* MERGEFORMAT"); | |
builder.InsertBreak(BreakType.LineBreak); | |
builder.InsertField("MERGEFIELD Grade \\* MERGEFORMAT"); | |
builder.InsertParagraph(); | |
// Insert teacher comments | |
builder.InsertField("MERGEFIELD TeacherComments \\* MERGEFORMAT"); | |
builder.InsertBreak(BreakType.LineBreak); | |
// Insert principal's name | |
builder.InsertField("MERGEFIELD PrincipalName \\* MERGEFORMAT"); | |
builder.InsertParagraph(); | |
return builder.Document; | |
} | |
static string GenerateSampleStudentData() | |
{ | |
string fileName = "StudentData.xml"; | |
File.WriteAllText(fileName, $@" | |
<Students> | |
<Student> | |
<StudentFirstName>Emily</StudentFirstName> | |
<StudentLastName>Johnson</StudentLastName> | |
<Subject>Mathematics</Subject> | |
<MarksObtained>85</MarksObtained> | |
<TotalMarks>100</TotalMarks> | |
<Grade>A</Grade> | |
<TeacherComments>Excellent performance!</TeacherComments> | |
<PrincipalName>Dr. William Carter</PrincipalName> | |
</Student> | |
<Student> | |
<StudentFirstName>Liam</StudentFirstName> | |
<StudentLastName>Smith</StudentLastName> | |
<Subject>Science</Subject> | |
<MarksObtained>78</MarksObtained> | |
<TotalMarks>100</TotalMarks> | |
<Grade>B</Grade> | |
<TeacherComments>Good effort, keep improving.</TeacherComments> | |
<PrincipalName>Dr. William Carter</PrincipalName> | |
</Student> | |
</Students>"); | |
return fileName; | |
} | |
} |
Αυτός ο κώδικας επιδεικνύει τη διαδικασία συγχώνευσης αλληλογραφίας στο MS Word βήμα προς βήμα με C#. Χρησιμοποιήσαμε τη μέθοδο DocumentBuilder.InsertField()
με την ετικέτα MERGEFIELD
για τη δημιουργία του επιθυμητού προτύπου. Μπορείτε να εφαρμόσετε όλη τη μορφοποίηση που επιθυμείτε στο πρότυπο χρησιμοποιώντας διάφορα στυλ και ρυθμίσεις διάταξης ανάλογα με τις απαιτήσεις σας.
Αυτό το άρθρο μας δίδαξε πώς να εφαρμόζουμε τη συγχώνευση αλληλογραφίας στο MS Word βήμα προς βήμα με C#. Για να ορίσετε στυλ και να σχεδιάσετε προσαρμοσμένους πίνακες, ανατρέξτε στο άρθρο Σχεδιασμός πινάκων στο Word με C#.