این راهنما توضیح میدهد که چگونه ادغام پستی را در MS Word با Java انجام دهید. این مقاله شامل جزئیات تنظیم محیط توسعه، لیستی از مراحل و یک نمونه کد است که چگونگی انجام ادغام پستی در Word با Java را نشان میدهد. تمام دادههای مورد نیاز برای اجرای کد در این نمونه آماده شده است.
مراحل ایجاد ادغام پستی در Word با Java
- محیط را برای استفاده از Aspose.Words برای Java جهت ایجاد ادغام پستی تنظیم کنید
- یک قالب فایل Word را در یک شی Document با استفاده از کلاس DocumentBuilder ایجاد کنید
- تمام فیلدها را در قالب با استفاده از متد insertField() اضافه کنید
- یک فایل XML ورودی را مطابق با فیلدهای موجود در فایل قالب Word ایجاد کنید
- فایل قالب Word را در شی Document بارگذاری کنید
- متد getMailMerge().execute() را در کلاس Document برای تولید فایل خروجی Word فراخوانی کنید
- فایل خروجی Word را ذخیره کنید
مراحل بالا توضیح میدهند که چگونه ادغام پستی را در Word با Java انجام دهید. شما میتوانید یک فایل قالب جدید ایجاد کنید یا یک فایل قالب موجود را در شی 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 مراجعه کنید.