Αυτός ο οδηγός περιγράφει πώς να κάνετε συγχώνευση αλληλογραφίας στο MS Word με Java. Θα σας παρέχει λεπτομέρειες για τη ρύθμιση του IDE, μια λίστα βημάτων και ένα δείγμα κώδικα που επιδεικνύει πώς να εκτελέσετε συγχώνευση αλληλογραφίας στο Word με Java. Όλα τα απαραίτητα δεδομένα έχουν δημιουργηθεί στον κώδικα για την εκτέλεσή του χωρίς ελλείψεις πόρων.
Βήματα για τη δημιουργία συγχώνευσης αλληλογραφίας στο Word με Java
- Ρυθμίστε το περιβάλλον για τη χρήση του Aspose.Words for Java για τη δημιουργία συγχώνευσης αλληλογραφίας
- Δημιουργήστε ένα πρότυπο αρχείου Word ως αντικείμενο Document χρησιμοποιώντας την κλάση DocumentBuilder
- Προσθέστε όλα τα πεδία στο πρότυπο χρησιμοποιώντας τη μέθοδο insertField()
- Δημιουργήστε το αρχείο XML εισόδου σύμφωνα με τα πεδία στο πρότυπο Word
- Φορτώστε το πρότυπο Word στο αντικείμενο Document
- Καλέστε τη μέθοδο getMailMerge().execute() στην κλάση Document για να δημιουργήσετε το αρχείο εξόδου
- Αποθηκεύστε το αρχείο Word εξόδου
Τα παραπάνω βήματα περιγράφουν πώς να εκτελέσετε συγχώνευση αλληλογραφίας στο Word με Java. Μπορείτε να δημιουργήσετε ένα νέο πρότυπο αρχείου Word με πεδία ή να φορτώσετε ένα υπάρχον πρότυπο στο αντικείμενο Document και να διαβάσετε το αρχείο XML στο αντικείμενο DataSet. Τέλος, καλέστε τη μέθοδο getMailMerge().execute(), περνώντας τον επιλεγμένο πίνακα και αποθηκεύοντας το αρχείο εξόδου.
Κώδικας για τη δημιουργία συγχώνευσης αλληλογραφίας στο MS Word με Java
import com.aspose.words.*; | |
import com.aspose.words.net.System.Data.DataSet; | |
import java.io.FileWriter; | |
import java.io.IOException; | |
public class Main { | |
public static void main(String[] args) throws Exception { | |
License pdfLicense = new License(); | |
pdfLicense.setLicense("license.lic"); | |
// Create a student report template | |
Document document = createStudentReportTemplate(); | |
document.save("ReportTemplate.docx"); | |
System.out.println("Report Template generated successfully."); | |
// Generate an XML file with sample student data | |
String xmlFileName = generateSampleStudentData(); | |
System.out.println("Sample XML file '" + xmlFileName + "' has been created."); | |
// Perform mail merge using the dataset | |
Document doc = new Document("ReportTemplate.docx"); | |
DataSet studentDataset = readXmlToDataSet(xmlFileName); | |
doc.getMailMerge().execute(studentDataset.getTables().get("Student")); | |
// Save the final report | |
doc.save("FinalReports.docx"); | |
System.out.println("Mail merge completed. Output saved as 'FinalReports.docx'."); | |
} | |
static Document createStudentReportTemplate() throws Exception { | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
// Insert student name fields | |
builder.insertField("MERGEFIELD StudentFirstName \\\u002A MERGEFORMAT"); | |
builder.insertField("MERGEFIELD StudentLastName \\\u002A MERGEFORMAT"); | |
builder.writeln(); | |
// Insert academic details | |
builder.insertField("MERGEFIELD Subject \\\u002A MERGEFORMAT"); | |
builder.insertBreak(BreakType.LINE_BREAK); | |
builder.insertField("MERGEFIELD MarksObtained \\\u002A MERGEFORMAT"); | |
builder.insertBreak(BreakType.LINE_BREAK); | |
builder.insertField("MERGEFIELD TotalMarks \\\u002A MERGEFORMAT"); | |
builder.insertBreak(BreakType.LINE_BREAK); | |
builder.insertField("MERGEFIELD Grade \\\u002A MERGEFORMAT"); | |
builder.writeln(); | |
// Insert teacher comments | |
builder.insertField("MERGEFIELD TeacherComments \\\u002A MERGEFORMAT"); | |
builder.insertBreak(BreakType.LINE_BREAK); | |
// Insert principal's name | |
builder.insertField("MERGEFIELD PrincipalName \\\u002A MERGEFORMAT"); | |
builder.writeln(); | |
return doc; | |
} | |
static String generateSampleStudentData() throws IOException { | |
String fileName = "StudentData.xml"; | |
String xmlContent = """ | |
<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> | |
"""; | |
try (FileWriter writer = new FileWriter(fileName)) { | |
writer.write(xmlContent); | |
} | |
return fileName; | |
} | |
static DataSet readXmlToDataSet(String xmlFileName) throws Exception { | |
DataSet dataSet = new DataSet(); | |
dataSet.readXml(xmlFileName); | |
return dataSet; | |
} | |
} |
Αυτός ο κώδικας εκτελεί όλα τα βήματα συγχώνευσης αλληλογραφίας στο MS Word με Java. Η κλάση DocumentBuilder περιλαμβάνει πολλές μεθόδους και ιδιότητες που μπορούν να ρυθμιστούν για την προσαρμογή του προτύπου και τη διαμόρφωση της αναφοράς. Ο κώδικας δημιουργεί μια ξεχωριστή σελίδα στο αρχείο εξόδου του Word για κάθε εγγραφή στον πίνακα.
Αυτό το άρθρο έδειξε πώς να χρησιμοποιήσετε τη συγχώνευση αλληλογραφίας στο Word με Java. Για να ρυθμίσετε το στυλ των πινάκων σε ένα υπάρχον αρχείο, διαβάστε το άρθρο Σχεδιασμός πινάκων στο Word με Java.