กระบวนการสร้างรายงานมักจะประกอบด้วยการเติมเทมเพลตเอกสารที่กำหนดไว้ล่วงหน้าซึ่งมีตัวยึดตำแหน่งสำหรับฟิลด์ที่ต้องการ เครื่องมือการรายงานใช้เอกสารเทมเพลตเป็นอินพุต เติมข้อมูลให้กับตัวยึดตำแหน่งแบบไดนามิก และสร้างรายงานผลลัพธ์ บทความนี้จะแสดงกรณีการใช้งานที่คล้ายกันซึ่งคุณสามารถสร้างเอกสาร Word โดยการเติมเทมเพลต Word แบบไดนามิกและโดยทางโปรแกรมโดยใช้ Java
ในการสร้างเอกสาร Word จากเทมเพลต DOCX เราจะใช้ LINQ Reporting Engine ที่เสนอโดย Aspose.Words for Java API LINQ Reporting Engine รองรับแท็กต่างๆ สำหรับข้อความ รูปภาพ รายการ ตาราง ไฮเปอร์ลิงก์ และบุ๊กมาร์กสำหรับเทมเพลต Word เอกสารเทมเพลตที่มีแท็กเหล่านี้จะถูกบรรจุโดยกลไกที่มีข้อมูลมาจากออบเจกต์ Java รวมถึงแหล่งข้อมูล XML, JSON หรือ CSV ดังนั้นมาเริ่มสร้างเอกสาร Word จากเทมเพลตโดยใช้ Java
บทความนี้จะกล่าวถึงวิธีการสร้างเอกสาร Word จากเทมเพลตโดยใช้:
- ค่าจากวัตถุ Java
- แหล่งข้อมูล XML
- แหล่งข้อมูล JSON
- และแหล่งข้อมูล CSV
การติดตั้ง Aspose.Words สำหรับ Java - Word Automation และ Report Generation API
คุณสามารถดาวน์โหลด Aspose.Words สำหรับ Java JAR หรือเพิ่มลงในแอปพลิเคชันที่ใช้ Maven โดยใช้การกำหนดค่าต่อไปนี้
พื้นที่เก็บข้อมูล:
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
การพึ่งพา:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>20.1</version>
<type>pom</type>
</dependency>
สร้างเอกสาร Word จากเทมเพลตโดยใช้ Java Objects
ในการเริ่มต้นสร้างรายงาน ขั้นแรกให้สร้างเอกสาร Word โดยเติมเทมเพลตด้วยค่าจากวัตถุ Java ในการกำหนดแม่แบบเอกสาร ให้สร้างเอกสาร Word ใหม่ ใส่แท็กต่อไปนี้ และบันทึกเป็นเอกสาร DOCX
<<[s.getName()]>> says: "<<[s.getMessage()]>>."
ในเทมเพลตด้านบน “s” จะถือว่าเป็นวัตถุของคลาส Java ที่จะใช้ในการเติมแท็ก ลองสร้างคลาสชื่อ Sender ที่มีสมาชิกข้อมูลสองคน
public class Sender {
public Sender(String name, String message) {
_name = name;
_message = message;
}
public String getName() {
return _name;
}
public String getMessage() {
return _message;
}
private String _name;
private String _message;
}
ตอนนี้ ได้เวลาส่งเทมเพลต Word ไปยัง LINQ Reporting Engine และสร้างเอกสาร Word ตามค่าของวัตถุของผู้ส่ง ต่อไปนี้เป็นขั้นตอนในการสร้างเอกสาร Word:
- สร้างวัตถุ Document และเริ่มต้นด้วยเส้นทางของเทมเพลต
- สร้างและเริ่มต้นวัตถุของคลาส Sender
- สร้างวัตถุของคลาส ReportingEngine
- สร้างรายงานโดยใช้เมธอด ReportingEngine.buildReport() ที่ยอมรับเทมเพลตเอกสาร แหล่งข้อมูล และชื่อของแหล่งข้อมูล
- บันทึกเอกสาร Word ที่สร้างขึ้นโดยใช้เมธอด Document.save()
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างเอกสาร Word จากเทมเพลต Word โดยใช้ค่าของวัตถุ Java
// สร้างวัตถุเอกสารและเริ่มต้นด้วยเทมเพลต DOCX
Document doc = new Document("template.docx");
// สร้างวัตถุผู้ส่ง
Sender sender = new Sender("LINQ Reporting Engine", "Hello World");
// สร้างออบเจกต์ ReportingEngine
ReportingEngine engine = new ReportingEngine();
// สร้างรายงาน
engine.buildReport(doc, sender, "s");
// บันทึกเป็นเอกสาร Word
doc.save("word.docx");
เอาต์พุต
สร้างเอกสาร Word จากเทมเพลตโดยใช้ข้อมูล XML
เรามาก้าวไปอีกขั้นหนึ่งและดูวิธีการเติมแม่แบบ Word โดยใช้แหล่งข้อมูล XML ในสถานการณ์ที่ซับซ้อนเล็กน้อย ต่อไปนี้คือแหล่งข้อมูล XML ที่เราจะใช้เพื่อเติมข้อมูลในเทมเพลต Word
<Persons>
<Person>
<Name>John Doe</Name>
<Age>30</Age>
<Birth>1989-04-01 4:00:00 pm</Birth>
</Person>
<Person>
<Name>Jane Doe</Name>
<Age>27</Age>
<Birth>1992-01-31 07:00:00 am</Birth>
</Person>
<Person>
<Name>John Smith</Name>
<Age>51</Age>
<Birth>1968-03-08 1:00:00 pm</Birth>
</Person>
</Persons>
ในสถานการณ์สมมตินี้ เราจะใช้แท็กต่อไปนี้ในเอกสารเทมเพลตสำหรับหลายระเบียนในแหล่งข้อมูล XML
<<foreach [in persons]>>Name: <<[Name]>>, Age: <<[Age]>>, Date of Birth: <<[Birth]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.average(p => p.Age)]>>
โค้ด Java สำหรับสร้างเอกสาร Word ในกรณีนี้จะเหมือนกัน และยกเว้นการส่งวัตถุ Java เป็นแหล่งข้อมูล เราจะส่งวัตถุ XmlDataSource ในเมธอด ReportingEngine.buildReport() ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างเอกสาร Word โดยการเติมเทมเพลตเอกสารโดยใช้แหล่งข้อมูล XML ใน Java
// สร้างวัตถุเอกสารและเริ่มต้นด้วยเทมเพลต DOCX
Document doc = new Document("template.docx");
// โหลด XML
XmlDataSource dataSource = new XmlDataSource("./datasource.xml");
// สร้างออบเจกต์ ReportingEngine
ReportingEngine engine = new ReportingEngine();
// สร้างรายงาน
engine.buildReport(doc, dataSource, "persons");
// บันทึกเป็นเอกสาร Word
doc.save("word.docx");
เอาต์พุต
สร้างเอกสาร Word จากเทมเพลตโดยใช้ข้อมูล JSON
มาดูวิธีสร้างเอกสาร Word จากเทมเพลต DOCX โดยใช้แหล่งข้อมูล JSON ต่อไปนี้คือข้อมูล JSON ที่เราจะใช้ในตัวอย่างนี้
[
{
Name: "John Smith",
Contract:
[
{
Client:
{
Name: "A Company"
},
Price: 1200000
},
{
Client:
{
Name: "B Ltd."
},
Price: 750000
},
{
Client:
{
Name: "C & D"
},
Price: 350000
}
]
},
{
Name: "Tony Anderson",
Contract:
[
{
Client:
{
Name: "E Corp."
},
Price: 650000
},
{
Client:
{
Name: "F & Partners"
},
Price: 550000
}
]
},
]
ในตัวอย่างนี้ เราจะสร้างเอกสาร Word ที่มีรายชื่อลูกค้าที่จัดกลุ่มตามผู้จัดการ ตามสถานการณ์นี้ เทมเพลต DOCX จะมีลักษณะดังนี้:
<<foreach [in managers]>>Manager: <<[Name]>>
Contracts:
<<foreach [in Contract]>>- <<[Client.Name]>> ($<<[Price]>>)
<</foreach>>
<</foreach>>
สำหรับการโหลดแหล่งข้อมูล JSON Aspose.Words มีคลาส JsonDataSource ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างเอกสาร Word จากเทมเพลตโดยใช้แหล่งข้อมูล JSON ใน Java
// สร้างวัตถุเอกสารและเริ่มต้นด้วยเทมเพลต DOCX
Document doc = new Document("template.docx");
// โหลด JSON
JsonDataSource dataSource = new JsonDataSource("datasource.json");
// สร้างออบเจกต์ ReportingEngine
ReportingEngine engine = new ReportingEngine();
// สร้างรายงาน
engine.buildReport(doc, dataSource, "managers");
// บันทึกเป็นเอกสาร Word
doc.save("word.docx");
เอาต์พุต
สร้างเอกสาร Word จากเทมเพลตโดยใช้ข้อมูล CSV
สุดท้าย แต่ไม่ท้ายสุด มาดูวิธีสร้างเอกสาร Word โดยการเติมเทมเพลต Word โดยใช้แหล่งข้อมูล CSV ต่อไปนี้
John Doe,30,1989-04-01 4:00:00 pm
Jane Doe,27,1992-01-31 07:00:00 am
John Smith,51,1968-03-08 1:00:00 pm
เทมเพลต Word ต่อไปนี้จะใช้ในตัวอย่างนี้:
<<foreach [in persons]>>Name: <<[Column1]>>, Age: <<[Column2]>>, Date of Birth: <<[Column3]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.average(p => p.Column2)]>>
สำหรับการจัดการกับแหล่งข้อมูล CSV Aspose.Words มีคลาส CsvDataSource ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างเอกสาร Word โดยใช้แหล่งข้อมูล CSV ใน Java
// สร้างวัตถุเอกสารและเริ่มต้นด้วยเทมเพลต DOCX
Document doc = new Document("template.docx");
// โหลด CSV
CsvDataSource dataSource = new CsvDataSource("datasource.csv");
// สร้างออบเจกต์ ReportingEngine
ReportingEngine engine = new ReportingEngine();
// สร้างรายงาน
engine.buildReport(doc, dataSource, "persons");
// บันทึกเป็นเอกสาร Word
doc.save("word.docx");
เอาต์พุต
เรียนรู้เพิ่มเติมเกี่ยวกับ LINQ Reporting Engine
LINQ Reporting Engine รองรับแท็กที่หลากหลายสำหรับการสร้างเอกสาร Word ที่มีคุณลักษณะครบถ้วนแบบไดนามิกใน Java คุณสามารถสำรวจเพิ่มเติมเกี่ยวกับแท็กเหล่านี้พร้อมกับไวยากรณ์ได้ใน บทความนี้
ในกรณีที่คุณมีคำถามหรือข้อสงสัย คุณสามารถโพสต์ได้ที่ Aspose.Words Forum