Scalanie korespondencji w MS Word za pomocą Java

W tym przewodniku opisano, jak wykonać scalanie korespondencji w MS Word za pomocą Java. Znajdziesz tutaj szczegóły dotyczące konfiguracji IDE, listę kroków oraz przykładowy kod demonstrujący jak wykonać scalanie korespondencji w Word za pomocą Java. W kodzie wygenerowane są wszystkie wymagane dane, co zapewnia poprawne wykonanie operacji bez brakujących zasobów.

Kroki tworzenia scalania korespondencji w Word za pomocą Java

  1. Skonfiguruj środowisko do korzystania z Aspose.Words for Java w celu wykonania scalania korespondencji
  2. Utwórz szablon pliku Word jako obiekt Document za pomocą klasy DocumentBuilder
  3. Dodaj wszystkie pola do szablonu za pomocą metody insertField()
  4. Utwórz plik wejściowy XML zgodnie z polami w szablonie Word
  5. Załaduj plik szablonu Word do obiektu Document
  6. Wywołaj metodę getMailMerge().execute() w klasie Document, aby wygenerować plik wyjściowy Word
  7. Zapisz wygenerowany plik Word

Powyższe kroki opisują jak wykonać scalanie korespondencji w Word za pomocą Java. Możesz utworzyć nowy plik szablonu Word z polami lub załadować istniejący plik szablonu do obiektu Document i wczytać plik XML do obiektu DataSet. Następnie wywołaj metodę getMailMerge().execute(), podając odpowiednią tabelę, i zapisz wynik.

Kod do tworzenia scalania korespondencji w MS Word za pomocą 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;
}
}

Ten kod wykonuje wszystkie kroki scalania korespondencji w MS Word za pomocą Java. Klasa DocumentBuilder zawiera wiele metod i właściwości, które można dostosować do edycji szablonu i formatowania raportu. Wygenerowany dokument Word będzie zawierał osobną stronę dla każdego rekordu w tabeli.

W tym artykule nauczyliśmy się jak używać scalania korespondencji w Word za pomocą Java. Aby dowiedzieć się, jak ustawić styl tabeli w istniejącym pliku, zapoznaj się z artykułem Projektowanie tabel w Word za pomocą Java.

 Polski