学习GroupDocs.Assembly的Word模板实践
GroupDocs
admin 发布于:2025-02-25 10:09:11
阅读:loading
前面在摸索了Aspose For Java的全量产品组件共计23款,闲来无事偶然又发现了在GroupDocs方向又存在一些产品,这些产品基本都是取自于一个又一个的组件,取自所有组件中的一个方向进行汇总,组成一个统一的产品包。本次摸索学习GroupDocs.Assembly产品,经过一些持续的分析和摸索,结合使用反射的形式来调用,也就是说在API的使用前进行一次特殊的代码注册,即可实现授权,全程不需要License之类的xml,或是文档无水印、或是文档页数限制、或是获取内容无限制,等等。
特别说明:只为单纯的学习摸索与自我突破,商业软件请勿直接使用于生产环境(购买商业授权)。
本次实践的是GroupDocs.Assembly for Java的24.9.1版本(当前最新版本),它是用于自动化文档和报告的 Java API;构建文档自动化应用程序以获取数据;将其放入可定制的模板并通过 Java API 生成动态报告。通俗的可以理解为这个产品提供了一套自定义的表达式(模板)语言,用于动态的生成Word、Excel、PPT、Outlook等相关格式的报表文件。除了微软办公格式文件以为也支持OpenOffice、Email、Web、Markdown、TXT等相关软件产品的文件格式。
我们还可以把 GroupDocs.Assembly for Java 简单理解成FreeMarker这种模板引擎,只不过它支持的模板类型的文件格式比较丰富,直接在源文件中声明表达式。内置的表达式语言支持参数输出、逻辑判断、数据循环、三目运算符、单元格合并等等,本次示例实践知识主要是以Word类型格式为主,从官网“https://github.com/groupdocs-assembly/GroupDocs.Assembly-for-Java/tree/master”提供的例子中摘取了一些典型案例实践,涉及到的知识点细节参考如下:
(1)示例使用了Word的两种最常见格式的模板文件,分别是docx和doc两种;
(2)示例使用的模板文件内容页有9页(超过4页),实践的科学方式分为两种,一种是使用反射进行特殊逻辑的执行,另一种则是使用统一的License进行授权,结果是无水印,无其它限制;
(3)示例包含了比较多的知识点细节,比如:图表生成、条形码图片生成、变量定义与输出、超链接、foreach循环、循环嵌套、表格嵌套、三目运算符、条件判断if-else、图片输出、表格输出、数据分组、数据筛选、数据汇总、背景色;
以官网提供的Github示例为准,分别从其中挑出几个简单的示例来演示,涵盖了一定特色的功能范围。
演示Word的docx和doc两种不同类型的文档模板引擎,参考示例代码如下:
public class HelloWord {
public static void main(String[] args) throws Throwable {
word("");
word("x");
}
public static void word(String temp) throws Throwable {
String srcDocument = "/Word Templates/hello.doc" + temp;
String docReport = "/Word Reports/hello_report.doc" + temp;
try {
DocumentAssembler assembler = new DocumentAssembler();
assembler.assembleDocument(CommonUtilities.getDataPath(srcDocument),
CommonUtilities.getOutPath(docReport),new DataSourceInfo( new DataStorage(), null),
new DataSourceInfo("https://www.groupdocs.com/","uriExpression"),
new DataSourceInfo("GroupDocs","displayTextExpression"),
new DataSourceInfo( DataStorage.excelData(), "contracts")
);
} catch (Exception exp) {
System.out.println("Exception: " + exp.getMessage());
}
}
}
挑选出来几个略微有特色的模板,给出截图,具体参考如下:
(变量声明与引用)
(图表模板)
(数据循环-含图片)
(循环嵌套-含数据汇总)
(循环分组-排序)
(循环条件判断-样式)
演示相关模板对应的文件输出,同样只给出部分的模板示例输出结果,详细参考如下:
(变量声明与引用)
(图表输出)
(数据循环-含图片)
(循环嵌套-含数据汇总)
(循环条件判断-样式)
(1)`GroupDocx.xxx`不是开源免费的使用,Github上有示例项目,包含了大量的示例,示例的结果就是生成了一些《Evaluation Warning》警告、水印、内容页数限制、内容文本限制等;
(2)aspose旗下有许多的产品,都是商业付费版本,常见于各种文档格式文件的操作,都需要商业授权使用,也基本都是支持多种编程语言的,如有Java、C++、.NET等等,官网也有多种在线示例;
(3)示例与相关文件下载:《Word格式docx与doc.zip》,注:下载并不包含具体的科学实现部分,只是源文件与示例输出文件;
(4)科学实现分为两种情况,一种是使用反射,另一种是使用License.xml文件;
(5)aspose相关的各个产品组件为独立存在的各个产品,GroupDocs是提取全集产品中的某个功能的集合,提供了一个大类的功能操作,并且统一对外提供API;
点赞