このガイドでは、Java で MS Word の差し込み印刷を実行する方法を説明します。IDE の設定手順、必要なステップ、そして Word での差し込み印刷を Java で実行する方法 を示すサンプルコードを紹介します。必要なデータはすべてコード内で提供されており、追加のリソースなしで実行できます。
Java で MS Word の差し込み印刷を作成する手順
- Aspose.Words for Java を設定し、差し込み印刷を実行する環境を整える
- DocumentBuilder クラスを使用して、Word のテンプレートファイルを Document オブジェクトに作成する
- insertField() メソッドを使用して、テンプレートにすべてのフィールドを追加する
- テンプレートのフィールドに基づいた XML 入力ファイルを作成する
- Word テンプレートファイルを Document オブジェクトに読み込む
- getMailMerge().execute() メソッドを呼び出し、出力 Word ファイルを生成する
- 出力 Word ファイルを保存する
これらの手順を通じて、Java で Word の差し込み印刷を実行する方法 を説明しました。新しい Word テンプレートを作成してフィールドを追加するか、既存のテンプレートファイルを Document オブジェクトに読み込み、XML ファイルを DataSet オブジェクトにロードできます。最後に、getMailMerge().execute() メソッドを呼び出し、結果を保存します。
Java で MS Word の差し込み印刷を作成するコード
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; | |
} | |
} |
このコードでは、Java で MS Word の差し込み印刷を実行する手順 をすべて適用しています。DocumentBuilder クラスには多くのメソッドやプロパティがあり、レポートのフォーマットをカスタマイズできます。このコードを実行すると、テーブルの各レコードに対して、出力 Word ファイルに個別のページが作成されます。
この記事では、Java で Word の差し込み印刷を使用する方法 を紹介しました。既存の Word ファイル内のテーブルのスタイルを設定する方法については、Java で Word のテーブルをデザインする の記事をご覧ください。