Hromadná korespondence v MS Word pomocí Java

Tento návod popisuje, jak provést hromadnou korespondenci v MS Word pomocí Java. Poskytuje podrobnosti o nastavení vývojového prostředí, seznam kroků a ukázkový kód demonstrující jak provést hromadnou korespondenci v Wordu pomocí Java. Všechny požadované údaje jsou v kódu vygenerovány tak, aby mohl být proveden bez chybějících zdrojů.

Kroky k vytvoření hromadné korespondence ve Wordu s Java

  1. Nastavte prostředí pro použití Aspose.Words for Java k vytvoření hromadné korespondence
  2. Vytvořte šablonu Word dokumentu jako objekt Document pomocí třídy DocumentBuilder
  3. Přidejte všechna pole do šablony pomocí metody insertField()
  4. Vytvořte vstupní XML soubor podle polí v šabloně Word dokumentu
  5. Načtěte šablonu Word dokumentu do objektu Document
  6. Zavolejte metodu getMailMerge().execute() ve třídě Document pro vygenerování výstupního Word souboru
  7. Uložte výstupní Word soubor

Výše uvedené kroky popisují jak provést hromadnou korespondenci ve Wordu s Java. Můžete vytvořit nový šablonový Word dokument s poli nebo načíst existující šablonu do objektu Document a načíst XML soubor do objektu DataSet. Nakonec zavolejte metodu getMailMerge().execute(), předejte vybranou tabulku a uložte výstupní soubor.

Kód pro vytvoření hromadné korespondence v MS Word s 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;
}
}

Tento kód vykonává všechny kroky hromadné korespondence v MS Word s Java. Třída DocumentBuilder obsahuje řadu metod a vlastností, které lze nastavit pro přizpůsobení šablony a formátování zprávy. Tento kód vygeneruje samostatnou stránku ve výstupním Word souboru pro každý záznam v tabulce.

Tento článek nás naučil jak použít hromadnou korespondenci ve Wordu s Java. Chcete-li nastavit styly tabulek v existujícím souboru, přečtěte si článek Design tabulek ve Wordu s Java.

 Čeština