Combinar correspondencia en MS Word con Java

Esta guía describe cómo realizar la combinación de correspondencia en MS Word con Java. Proporciona detalles sobre la configuración del IDE, una lista de pasos y un código de muestra que muestra cómo hacer una combinación de correspondencia en Word con Java. Todos los datos necesarios están generados en el código para su ejecución sin recursos faltantes.

Pasos para realizar una combinación de correspondencia en Word con Java

  1. Configurar el entorno para usar Aspose.Words para Java y realizar la combinación de correspondencia
  2. Crear una plantilla de archivo de Word en un objeto Document utilizando la clase DocumentBuilder
  3. Agregar todos los campos a la plantilla utilizando el método insertField()
  4. Crear un archivo XML de entrada de acuerdo con los campos de la plantilla de Word
  5. Cargar el archivo de plantilla de Word en el objeto Document
  6. Llamar al método getMailMerge().execute() en la clase Document para generar un archivo de salida en Word
  7. Guardar el archivo de Word generado

Los pasos anteriores explican cómo realizar la combinación de correspondencia en Word con Java. Puede crear un nuevo archivo de plantilla de Word con campos o cargar una plantilla existente en el objeto Document y leer el archivo XML en el objeto DataSet. Finalmente, llame al método getMailMerge().execute() pasando la tabla seleccionada y guarde el archivo de salida después de ejecutar esta función.

Código para realizar la combinación de correspondencia en MS Word con 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;
}
}

Este código ejecuta todos los pasos para la combinación de correspondencia en MS Word con Java. La clase DocumentBuilder proporciona varios métodos y propiedades que pueden ajustarse para personalizar la plantilla y formatear el informe. Este código generará una página separada en el archivo de salida de Word para cada registro en la tabla.

Este artículo ha explicado cómo usar la combinación de correspondencia en Word con Java. Para configurar el estilo de las tablas en un archivo existente, consulte el artículo Diseñar tablas en Word con Java.

 Español