提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:周思宇|2023-04-12 17:28:20.437|阅读 169 次
概述:在本文中,我将向您展示使用 Java 从模板动态生成 Word 文档的过程。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外,
Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。
报告生成过程通常包括填充包含所需字段占位符的预定义文档模板。报告引擎将模板文档作为输入,用数据动态填充占位符并生成结果报告。本文还将展示一个类似的用例,您可以通过使用 Java 以编程方式动态填充 Word 模板来生成 Word 文档。
要从 DOCX 模板生成 Word 文档,我们将使用 Aspose.Words for Java API 提供的 LINQ Reporting Engine。 LINQ 报告引擎支持用于 Word 模板的文本、图像、列表、表格、超链接和书签的各种标记。包含这些标签的模板文档由引擎填充来自 Java 对象以及 XML、JSON 或 CSV 数据源的数据。因此,让我们开始使用 Java 从模板生成 Word 文档。
本文将介绍如何使用以下模板从模板生成 Word 文档:
您可以下载 Aspose.Words for Java JAR 或使用以下配置将其添加到基于 Maven 的应用程序中。
存储库:
<repository> <id>AsposeJavaAPI</id> <name>Aspose Java API</name> <url>//repository.aspose.com/repo/</url> </repository>依赖:
<dependency> <groupId>com.aspose</groupId> <artifactId>aspose-words</artifactId> <version>20.1</version> <type>pom</type> </dependency>
要开始生成报告,我们首先通过使用 Java 对象中的值填充模板来创建一个 Word 文档。为了定义文档模板,创建一个新的 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 报告引擎并根据 Sender 对象的值生成 Word 文档了。以下是生成Word文档的步骤:
以下代码示例展示了如何使用 Java 对象的值从 Word 模板生成 Word 文档。
// Create Document object and initialize with DOCX template. Document doc = new Document("template.docx"); // Create Sender object. Sender sender = new Sender("LINQ Reporting Engine", "Hello World"); // Create ReportingEngine object. ReportingEngine engine = new ReportingEngine(); // Build report. engine.buildReport(doc, sender, "s"); // Save as Word document. doc.save("word.docx");
现在让我们更进一步,看看如何在有点复杂的场景中使用 XML 数据源填充 Word 模板。以下是我们将用于填充 Word 模板的 XML 数据源。
<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)]>>
在这种情况下,用于生成 Word 文档的 Java 代码是相同的,除了将 Java 对象作为数据源传递之外,我们将在 ReportingEngine.buildReport() 方法中传递 XmlDataSource 对象。以下代码示例展示了如何通过使用 Java 中的 XML 数据源填充文档模板来创建 Word 文档。
// Create Document object and initialize with DOCX template. Document doc = new Document("template.docx"); // Load XML XmlDataSource dataSource = new XmlDataSource("./datasource.xml"); // Create ReportingEngine object. ReportingEngine engine = new ReportingEngine(); // Build report. engine.buildReport(doc, dataSource, "persons"); // Save as Word document. doc.save("word.docx");
现在让我们看看如何使用 JSON 数据源从 DOCX 模板生成 Word 文档。以下是我们将在此示例中使用的 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 类。以下代码示例展示了如何使用 Java 中的 JSON 数据源从模板创建 Word 文档。
// Create Document object and initialize with DOCX template. Document doc = new Document("template.docx"); // Load JSON JsonDataSource dataSource = new JsonDataSource("datasource.json"); // Create ReportingEngine object. ReportingEngine engine = new ReportingEngine(); // Build report. engine.buildReport(doc, dataSource, "managers"); // Save as Word document. doc.save("word.docx");
最后但同样重要的是,让我们看看如何通过使用以下 CSV 数据源填充 Word 模板来生成 Word 文档。
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 类。以下代码示例展示了如何使用 Java 中的 CSV 数据源生成 Word 文档。
// Create Document object and initialize with DOCX template. Document doc = new Document("template.docx"); // Load CSV CsvDataSource dataSource = new CsvDataSource("datasource.csv"); // Create ReportingEngine object. ReportingEngine engine = new ReportingEngine(); // Build report. engine.buildReport(doc, dataSource, "persons"); // Save as Word document. doc.save("word.docx");
以上便是如何使用 Java 从模板动态生成 Word 文档的过程,要是您还有其他关于产品方面的问题,欢迎咨询我们,或者加入我们官方技术交流群
欢迎下载|体验更多Aspose产品
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢