Συγχώνευση Αλληλογραφίας στο MS Word με χρήση C#

Αυτό το άρθρο εξηγεί πώς να εκτελέσετε συγχώνευση αλληλογραφίας στο MS Word με C#. Περιλαμβάνει λεπτομέρειες για τη ρύθμιση του IDE, μια λίστα βημάτων και έναν ολοκληρωμένο δείγμα κώδικα που επιδεικνύει πώς να εκτελέσετε συγχώνευση αλληλογραφίας στο Word με C#. Όλα τα απαιτούμενα αρχεία δημιουργούνται από αυτόν τον κώδικα, οπότε δεν χρειάζεται κανένα αρχείο εισόδου ή δεδομένα για την εκτέλεσή του.

Βήματα για τη δημιουργία συγχώνευσης αλληλογραφίας στο Word με C#

  1. Ρυθμίστε το IDE για να χρησιμοποιήσετε το Aspose.Words for .NET για τη συγχώνευση αλληλογραφίας
  2. Δημιουργήστε ένα αρχείο προτύπου συγχώνευσης αλληλογραφίας χρησιμοποιώντας την κλάση DocumentBuilder
  3. Δημιουργήστε ή φορτώστε ένα δείγμα αρχείου XML που περιέχει δεδομένα εισόδου για το πρότυπο συγχώνευσης
  4. Δημιουργήστε ένα DataSet από το φορτωμένο αρχείο XML
  5. Καλέστε τη MailMerge.Execute() για το έγγραφο χρησιμοποιώντας τον παραπάνω πίνακα δεδομένων
  6. Αποθηκεύστε το αρχείο 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#.

 Ελληνικά