Deze handleiding beschrijft hoe u een mail merge in MS Word met Java kunt uitvoeren. Het geeft details over het instellen van de IDE, een stapsgewijze handleiding en een voorbeeldcode die laat zien hoe u een mail merge in Word met Java uitvoert. Alle benodigde gegevens worden in de code gegenereerd, zodat er geen ontbrekende bronnen zijn.
Stappen om een Mail Merge in Word met Java uit te voeren
- Stel de omgeving in om Aspose.Words for Java te gebruiken voor een mail merge
- Maak een Word-sjabloonbestand als een Document-object met behulp van de DocumentBuilder-klasse
- Voeg alle velden toe in de sjabloon met de insertField()-methode
- Maak het invoer-XML-bestand aan volgens de velden in de Word-sjabloon
- Laad het Word-sjabloonbestand in het Document object
- Roep de getMailMerge().execute() methode aan in de Document-klasse om een uitvoerbestand te genereren
- Sla het gegenereerde Word-bestand op
De bovenstaande stappen beschrijven hoe u een mail merge met Word en Java uitvoert. U kunt een nieuwe Word-sjabloon met velden maken of een bestaande sjabloon in het Document-object laden en een XML-bestand in het DataSet-object inlezen. Roep vervolgens de getMailMerge().execute()-methode aan, geef de geselecteerde tabel door en sla het resultaat op.
Codevoorbeeld voor Mail Merge in MS Word met 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; | |
} | |
} |
Deze code voert alle stappen van een mail merge in MS Word met Java uit. De DocumentBuilder-klasse bevat meerdere methoden en eigenschappen waarmee u de sjabloon kunt aanpassen en de opmaak kunt instellen. De gegenereerde Word-uitvoer bevat een aparte pagina voor elke record in de tabel.
In dit artikel hebben we geleerd hoe u mail merge in Word met Java kunt gebruiken. Wilt u een tabelstijl instellen in een bestaand Word-document? Lees dan het artikel over Tabellen ontwerpen in Word met Java.