java 如何将word 转换为ftl_利用java通过freemarker模板文件生成带格式的word文档

本文介绍了一个在线生成起诉状的小工具,通过Java将预定义格式的Word文档转换为FTL模板。步骤包括:1) 创建Word格式的起诉状;2) 将Word另存为XML并编辑;3) 保存为FTL模板。代码示例展示了如何利用Freemarker读取模板和数据,合并生成带格式的Word文档。
摘要由CSDN通过智能技术生成

最近做了个小项目,需要在线生成起诉状且带格式。做了个小工具分享给大家,也借鉴了网络上的东西,废话不多说,上干货

1.把需要生成固定格式的文件保存为word文档(图1)

2.把word另存为xml格式,并且格式化,好修改里面的东西

3.修改好后保存,格式改为ftl模板

下面代码:public final static String createWord(HttpServletResponse response,Map dataMap, String templateName, String fileName) {

String result = "系统提示:Word文件导出成功!";

try {

OutputStream os = response.getOutputStream();

//设置头部文件生成格式为微软word

response.reset();

response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("GB2312"), "ISO8859-1"));

response.setContentType("application/msword");

Configuration configuration = new Configuration();

configuration.setDefaultEncoding("UTF-8");

configuration.setClassForTemplateLoading(WordUtil.class, "/");//这里是指放在classes下

// 获取模板

Template template = configuration.getTemplate(templateName);

// 将模板和数据模型合并生成文件

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

template.process(dataMap, out);

// 关闭流

out.flush();

out.close();

} catch (Exception e) {

e.printStackTrace();

}

return result;

}

public static void main(String[] args) throws IOException, TemplateException {

String s = "{\"plaintiff\": [{ \"pUserName\": \"张三\", \"pUserSex\": \"男\", \"pAgeIcard\": \"44\",\"pNation\": \"汉族\",\"pAddress\": \"江苏\"},{\"pUserName\": \"得到\",\"pUserSex\": \"男\",\"pAgeIcard\": \"54\",\"pNation\": \"汉族\",\"pAddress\": \"湖南\"}],"

+ "\"accusedMan\": [{ \"accusedManName\": \"张三\", \"accusedManAddress\": \"男\", \"accusedManPeson\": \"张三\",\"accusedManJob\": \"班长\"}],\"signData\":{\"courtName\":\"北京\",\"copyNumber\":\"1\",\"suitor\":\"张三\"},\"lawsuitReest\":\"ddd\",\"reasonsContent\":\"dfdf\"}";

Map dataMap = new HashMap();

Map complaintMap = JsonUtil.getJsonToObject(s, Map.class);

List plaintiffList = new ArrayList();

List accusedManList = new ArrayList();

for (Object key : complaintMap.keySet()) {

Object contentJson = complaintMap.get(key);

if (key.equals("plaintiff")) {

plaintiffList.addAll(JsonUtil.queryJsonToList(contentJson.toString(), Map.class));

} else if (key.equals("accusedman")) {

accusedManList.addAll(JsonUtil.queryJsonToList(contentJson.toString(), Map.class));

} else {

dataMap.put(key, contentJson);

}

}

dataMap.put("plaintiff", plaintiffList);

dataMap.put("accusedman", accusedManList);

Configuration configuration = new Configuration();

configuration.setDefaultEncoding("UTF-8");

configuration.setClassForTemplateLoading(WordUtil.class, "/");

// 获取模板

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

// 输出文件

File outFile = new File("d:/" + File.separator + "cc.doc");

// 如果输出目标文件夹不存在,则创建

if (!outFile.getParentFile().exists()) {

outFile.getParentFile().mkdirs();

}

// 将模板和数据模型合并生成文件

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

template.process(dataMap, out);

// 关闭流

out.flush();

out.close();

}

public class JsonUtil {

/**

* 从一个JSON 对象字符格式中得到一个java对象

*

* @param jsonString JSON 对象字符

* @param pojoCalss 对象class *

* @return 返回java对象

*/

public static Object getObject4JsonString(String jsonString, Class> pojoCalss) {

Object pojo;

JSONObject jsonObject = JSONObject.parseObject(jsonString);

pojo = JSONObject.toJavaObject(jsonObject, pojoCalss);

return pojo;

}

/**

* 从json HASH表达式中获取一个map,改map支持嵌套功能

*

* @param jsonString json HASH表达式

* @return 返回map数组

*/

public static Map getMap4Json(String jsonString) {

JSONObject jsonObject = JSONObject.parseObject(jsonString);

Iterator keyIter = jsonObject.keySet().iterator();

String key;

Object value;

Map valueMap = new HashMap();

while (keyIter.hasNext()) {

key = (String) keyIter.next();

value = jsonObject.get(key);

valueMap.put(key, value);

}

return valueMap;

}

/**

* 从json数组中得到相应java数组

*

* @param jsonString json字符串

* @return 返回java数组

*/

public static Object[] getObjectArray4Json(String jsonString) {

JSONArray jsonArray = JSONArray.parseArray(jsonString);

return jsonArray.toArray();

}

/**

* 将一个对象转换为JSON字符串

* @param obj 对象

* @return 返回json字符串

*/

public static String getObjectToJsonObject(Object obj){

return JSON.toJSON(obj).toString();

}

/**

* 从json数组中解析出java字符串数组

*

* @param jsonString json字符串

* @return 返回java字符串数字

*/

public static String[] getStringArray4Json(String jsonString) {

JSONArray jsonArray = JSONArray.parseArray(jsonString);

String[] stringArray = new String[jsonArray.size()];

for (int i = 0; i < jsonArray.size(); i++) {

stringArray[i] = jsonArray.get(i).toString();

}

return stringArray;

}

/**

* 将一个JSON数据转换为对应的JAVA对象

* JSON数据中键的名称必须和对应JAVA对象中bean字段的名称一致

* @param java对象值

* @param jsonString JSON 对象字符

* @param cls 对象class *

* @return 返回java对象

*/

public static T getJsonToObject(String jsonString, Class cls) {

return JSONObject.parseObject(jsonString,cls);

}

/**

* 从json对象集合表达式中得到一个java对象集合

* JSON数据中键的名称必须和对应JAVA对象中bean字段的名称一致

*

* @param 对象值

* @param jsonString json字符串

* @param cls JAVA Bean对象

* @return JAVA bean对象集合list

*/

public static List queryJsonToList(String jsonString,Class cls) {

List list = JSONArray.parseArray(jsonString,cls);

return list;

}

}

还有一个ftl的模板文件,可以自己写个,也可以找我要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值