相关文章推荐
跑龙套的圣诞树  ·  NuGet Gallery ...·  7 月前    · 
跑龙套的圣诞树  ·  SpringBoot Spring ...·  7 月前    · 
跑龙套的圣诞树  ·  如何在S/4HANA ...·  9 月前    · 
跑龙套的圣诞树  ·  Day 14 - Asynchronous ...·  10 月前    · 
跑龙套的圣诞树  ·  Azure Core shared ...·  11 月前    · 
不羁的面包  ·  mac安装lxml-西瓜视频·  42 分钟前    · 
有腹肌的烈酒  ·  MAC ...·  42 分钟前    · 
无聊的豆浆  ·  独家!万顺叫车赴美上市·  42 分钟前    · 
腼腆的炒粉  ·  Supervised Learning ...·  1小时前    · 

Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外,

Aspose API 支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。

Aspose.words 最新下载(qun:761297826) icon-default.png?t=N2N8 https://www.evget.com/product/564/download

报告生成过程通常包括填充包含所需字段占位符的预定义文档模板。报告引擎将模板文档作为输入,用数据动态填充占位符并生成结果报告。本文还将展示一个类似的用例,您可以通过使用 Java 以编程方式动态填充 Word 模板来生成 Word 文档。

要从 DOCX 模板生成 Word 文档,我们将使用 Aspose.Words for Java API 提供的 LINQ Reporting Engine。 LINQ 报告引擎支持用于 Word 模板的文本、图像、列表、表格、超链接和书签的各种标记。包含这些标签的模板文档由引擎填充来自 Java 对象以及 XML、JSON 或 CSV 数据源的数据。因此,让我们开始使用 Java 从模板生成 Word 文档。

本文将介绍如何使用以下模板从模板生成 Word 文档:

  • Java 对象的值,
  • XML 数据源,
  • JSON数据源,
  • CSV 数据源。

安装 Aspose.Words for Java - Word 自动化和报告生成 API

您可以下载 Aspose.Words for 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>

使用 Java 对象从模板生成 Word 文档

要开始生成报告,我们首先通过使用 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文档的步骤:

  • 创建 Document 对象并使用模板的路径对其进行初始化。
  • 创建并初始化 Sender 类的对象。
  • 创建一个 ReportingEngine 类的对象。
  • 使用接受文档模板、数据源和数据源名称的 ReportingEngine.buildReport() 方法构建报表。
  • 使用 Document.save() 方法保存生成的 Word 文档。

以下代码示例展示了如何使用 Java 对象的值从 Word 模板生成 Word 文档。

// 创建 Document 对象并使用 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");

使用 XML 数据从模板创建 Word 文档

现在让我们更进一步,看看如何在有点复杂的场景中使用 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 文档。

// 创建 Document 对象并使用 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");

使用 JSON 数据从模板生成 Word 文档

现在让我们看看如何使用 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 文档。

// 创建 Document 对象并使用 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");

使用 CSV 数据从模板生成 Word 文档

最后但同样重要的是,让我们看看如何通过使用以下 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 文档。

// 创建 Document 对象并使用 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");

以上便是如何使用 Java 从模板动态生成 Word 文档的过程,要是您还有其他关于产品方面的问题,欢迎咨询我们,或者加入我们官方技术交流群

在这种情况下,用于生成 Word 文档的 Java 代码是相同的,除了将 Java 对象作为数据源传递之外,我们将在 ReportingEngine.buildReport() 方法中传递 XmlDataSource 对象。为了定义文档模板,创建一个新的 Word 文档,插入以下标签并将其保存为 DOCX 文档。以上便是如何使用 Java 从模板动态生成 Word 文档的过程,要是您还有其他关于产品方面的问题,欢迎咨询我们,或者加入我们官方技术交流群。以下是我们将在此示例中使用的 JSON 数据。
1.基本介绍 Aspose.Words是一个商业.NET类库,可以使得应用程序处理大量的文件任务。Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XPS,EPUB和其他格式。使用Aspose.Words可以在不使用Microsoft.Word的情况下生成、修改、转换和打印文档。在项目中使用Aspose.Words可以有以下好处。
aspose家族的包很丰富 有操作word pdf excell 等等 今天主要说的是操作word 先引入坐标 提一嘴 aspose的坐标直接从maven仓库引入会报找不到 所以要先配置aspose自己的仓库坐标 <dependencies> <dependency> <groupId>com.aspose</groupId>
使用com.aspose.wordsword模板转为PDF文件时,在开发平台window下转换没有问题,中文也不会出现乱码。但是将服务部署在正式服务器(Linux)上,转换出来的PDF中文就出现了乱码。 问题原因分析 在window下没有问题但是在linux下有问题,就说明不是代码或者输入输出流编码的问题,根本原因是两个平台环境的问题。出现乱码说明linux环境中没有相应的字体以供使用,所以就会...
 
推荐文章