يصف هذا الدليل كيفية تنفيذ دمج المراسلات في MS Word باستخدام Java. ستوضح المقالة تفاصيل إعداد بيئة التطوير، قائمة بالخطوات، وعينة كود توضح كيفية تنفيذ دمج المراسلات في Word باستخدام Java. يتم توليد جميع البيانات المطلوبة داخل هذا الكود لتنفيذه بدون أي موارد مفقودة.
خطوات إنشاء دمج المراسلات في Word باستخدام Java
- قم بإعداد البيئة لاستخدام Aspose.Words for Java لإنشاء دمج المراسلات
- أنشئ قالب ملف Word داخل كائن Document باستخدام الفئة DocumentBuilder
- أضف جميع الحقول في القالب باستخدام الطريقة insertField()
- قم بإنشاء ملف XML الإدخال وفقًا للحقول في قالب ملف Word
- قم بتحميل ملف قالب Word في كائن Document
- استدعِ الطريقة getMailMerge().execute() في الفئة Document لإنشاء ملف Word الناتج
- احفظ ملف Word الناتج
توضح الخطوات أعلاه كيفية تنفيذ دمج المراسلات في Word باستخدام Java. يمكنك إنشاء ملف قالب Word جديد يحتوي على الحقول المطلوبة أو تحميل ملف قالب موجود إلى كائن Document، ثم قراءة ملف XML إلى كائن DataSet. أخيرًا، قم باستدعاء الطريقة getMailMerge().execute() مع تمرير الجدول المحدد، ثم احفظ الملف بعد تنفيذ الوظيفة.
كود إنشاء دمج المراسلات في MS Word باستخدام 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; | |
} | |
} |
يُظهر هذا الكود تنفيذ جميع خطوات دمج المراسلات في MS Word باستخدام Java. توفر الفئة DocumentBuilder العديد من الطرق والخصائص التي يمكن تعديلها لتخصيص ملف القالب وضبط تنسيق التقرير. سينشئ هذا الكود صفحة منفصلة في ملف Word الناتج لكل سجل موجود في الجدول.
تناولت هذه المقالة كيفية استخدام دمج المراسلات في Word باستخدام Java. إذا كنت بحاجة إلى ضبط أنماط الجدول في ملف موجود، يمكنك الرجوع إلى المقالة حول تصميم الجداول في Word باستخدام Java.