Questa guida descrive come eseguire la stampa unione in MS Word con Java. Fornisce dettagli sulla configurazione dell’IDE, un elenco di passaggi e un esempio di codice che dimostra come eseguire una stampa unione in Word con Java. Tutti i dati necessari sono inclusi nel codice per garantire l’esecuzione senza risorse mancanti.
Passaggi per creare una stampa unione in Word con Java
- Configura l’ambiente per utilizzare Aspose.Words per Java per creare una stampa unione
- Crea un modello di file Word in un oggetto Document utilizzando la classe DocumentBuilder
- Aggiungi tutti i campi nel modello utilizzando il metodo insertField()
- Crea il file XML di input in base ai campi presenti nel modello di file Word
- Carica il file modello di Word nell’oggetto Document
- Chiama il metodo getMailMerge().execute() nella classe Document per generare un file Word di output
- Salva il file Word di output
I passaggi sopra descrivono come eseguire una stampa unione in Word con Java. Puoi creare un nuovo modello di file Word con i campi necessari o caricare un file modello esistente nell’oggetto Document e leggere il file XML nell’oggetto DataSet. Infine, chiama il metodo getMailMerge().execute() passando la tabella selezionata e salva il risultato dopo l’esecuzione.
Codice per creare una stampa unione in 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; | |
} | |
} |
Questo codice esegue tutti i passaggi della stampa unione in MS Word con Java. La classe DocumentBuilder offre numerosi metodi e proprietà che possono essere configurati per personalizzare il modello e formattare un report. Il codice genererà una pagina separata nel file Word di output per ogni record nella tabella.
Questo articolo ha spiegato come utilizzare la stampa unione in Word con Java. Se vuoi impostare lo stile della tabella in un file esistente, consulta l’articolo: Progettare tabelle in Word con Java.