java 复杂word_Java 动态生成复杂 Word

本文介绍了如何使用Java结合FreeMarker模板引擎动态生成复杂的Word文档。首先,需要制作一个Word模板,将动态内容替换为${}形式,然后将Word文档保存为XML。接着,将XML文件更改为.ftl并引入项目。代码示例展示了如何配置FreeMarker,创建数据Map,并生成最终的Word文档。注意,Word版本需为2003或以上,且需要在项目中放置.FTL模板文件。
摘要由CSDN通过智能技术生成

Java 动态生成复杂 Word

阅读目录

1. 制作 Word 模版,将你需要动态生成的字段用${}替换。

2. 将 Word文档保存为 xml 。

3. 引入项目。

项目中需要用 java 程序生成doc 文件,百度一番,发现FreeMarker 的评价比较高。

FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出,至于想详细了解 FreeMarker 的请自行百度。

1. 制作 Word 模版,将你需要动态生成的字段用${}替换。如:${name}、${age}

971294de6f70c3b920895b7b8f89b626.png

2. 将 Word文档保存为 xml。

88339c7ad82148bedfb7e284eec083c1.png

3.引入项目。

将 xml 文件更改后缀名 为 .ftl, 然后引用到你的项目中。

ec19f1beebd2c67b2a2140cd27854b51.png

需要注意的问题:

a. word 版本不能低于 2003 ,因为 2003 才开始支持 xml。

实现的代码如下:

packageword;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileOutputStream;importjava.io.OutputStreamWriter;importjava.io.Writer;importjava.util.HashMap;importjava.util.Map;importfreemarker.template.Configuration;importfreemarker.template.Template;public classWordTest {private Configuration configuration = null;publicWordTest() {

configuration= newConfiguration();

configuration.setDefaultEncoding("UTF-8");

}public voidcreateWord() {

Map dataMap = new HashMap();try{

dataMap.put("name", "guoxp");

dataMap.put("sex", "男");configuration.setClassForTemplateLoading(this.getClass(), "/template"); //FTL文件所存在的位置

Template template = configuration.getTemplate("fz.ftl");

File outFile= new File("D:/temp2/wordTest2.doc");//D:/temp2这个路径下的temp2文件夹是手动创建的

Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));

template.process(dataMap, out);

out.close();

}catch(Exception e) {

e.printStackTrace();

}

}public static voidmain(String[] args) {

WordTest test= newWordTest();

test.createWord();

}

}

目录结构以及效果图如下:

d525b5db6505478074f7168eb8ac3b0a.png

0693c69d233537e0f3ad84299d0853aa.png

备注:

a.template.process(),接受一个 Map 和 输入流做为入参,Map 既是你需要动态生成到 doc 里面的数据,字段名必须与你在 .ftl 里面定义的一致;

b.如果你想利用这段代码,需要有一个 .ftl 文件,并且在你的项目 src 目录下面新建 template 目录;

c.辅助文件"FreeMarker.jar 、实例项目的.ftl "。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值