java动态生成word文档_Java 动态生成复杂 office Word 文件

本文介绍了如何利用FreeMarker模板引擎动态生成复杂的Java Word文档。首先,制作Word模板,将动态字段用${}表示,然后将模板保存为XML。接着,使用EditPlus编辑器将静态文字改为${}格式并改扩展名为.ftl。在Java代码中,创建Configuration对象,加载模板,并设置动态数据,最后生成Word文档。
摘要由CSDN通过智能技术生成

FreeMarker是一个用Java语言编写的模板引擎

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

为防止xml转ftl格式错误,建议暂时不替换 如现在的:单位、服务、时间。

9ccdced327d968d6b23d0b7520f80e38.png

2、将 Word文档保存为 xml。

6e275a951eef0b968cbf95701fba5a5e.png

ef69c1863bc3e8a9d92bd24260a7df92.png

3、然后借助文件编辑器:EditPlus

将需要动态生成的文字改为 ${ }格式

如:服务 改为 ${fuwu} ,

5dcccf2c05884df4eb2da85ee6ff2c32.png

将 xml 文件更改后缀名 为 .ftl,

src目录下的flows/test.ftl

a4e096753924230d0b062d0605ebf3e8.png

4、实现代码:

package com.gxkj.serve.controller;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileOutputStream;

import java.io.OutputStreamWriter;

import java.io.Writer;

import java.util.HashMap;

import java.util.Map;

import freemarker.template.Configuration;

import freemarker.template.Template;

public class Print {

private Configuration configuration = null;

public Print() {

configuration = new Configuration();

configuration.setDefaultEncoding("UTF-8");

}

public void createWord() {

try {

configuration.setClassForTemplateLoading(this.getClass(), "/flows");

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

Mapmap = new HashMap();

map.put("fuwu", "数据存储服务");

map.put("unit", "市人社局");// 获取单位名称

map.put("time", "2017-03-31");

File outFile = new File("D:/test.doc");

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

template.process(map, out);

out.close();

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

Print p = new Print();

p.createWord();

}

}

项目·结构:

关键是test.ftl存放的位置,我放在src目录下的路径flows/test.ftl

代码写在src任意包下皆可

d26d54fce7f680863b3836a8e740adb9.png

成果:d2273e4aebaaeaf7e5717d0aab2c8daa.png

需要用到的jar包:freemarker-2.3.8.jar

百度云jar:链接:  http://pan.baidu.com/s/1pKF163L   密码:9e0a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值