freemarker导出word档

 1.word另存为xml;2.xml文件后缀名改成ftl;3.编写完整json字符串备用;4.修改ftl中动态字段为json中对应字段名;5.编写java代码自动生成word文件;(注意:换行用<w:br/>)

消防设施故障维修记录表.doc:

package freemarkerExportWord;

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 dto.EmergencyMaintenanceItem;
import freemarker.template.Configuration;
import freemarker.template.Template;
import net.sf.json.JSONObject;

public class FreemarkerExportWordTest2 {
	 public static void main(String[] args){
		try {
			test();
		} catch (Exception e) {
			e.printStackTrace();
		}
	 }
	 
	 private static void test() throws Exception{
		 	/** 初始化配置文件 **/
	        Configuration configuration = new Configuration();
	        /** 设置编码 **/
	        configuration.setDefaultEncoding("utf-8");
	        /** 我的ftl文件是放在G盘的**/
	        String fileDirectory = "G:\\freemarker导出word\\2";
	        /** 加载文件 **/
	        configuration.setDirectoryForTemplateLoading(new File(fileDirectory));
	        /** 加载模板 **/
	        Template template = configuration.getTemplate("消防设施故障维修记录表.ftl");
	        /** 准备数据 **/
	        Map<String,Object> dataMap = new HashMap<String,Object>();
	        String maintenanceData = "{\"emergencyMaintenanceItem\":{\"emergencyMaintenances\":[{\"maintenanceTime\":\"2018-06-27 16:31:53\",\"maintenanceMans\":\"张三\",\"faultLocation\":\"出口加工区大楼2层\",\"record\":\"\",\"safetyMeasure\":\"大多数阿苏飞洒地方阿斯蒂芬啊撒反对\",\"applyMan\":\"加工区\",\"faultDetail\":\"请尽快解决\",\"maintenanceMethod\":\"啊十分大师傅的发生阿斯顿\",\"applyTime\":\"2018-04-23 14:12:20\",\"stopSystem\":\"\",\"confirm\":\"东方不败\"},{\"maintenanceTime\":\"2018-06-26 16:33:39\",\"maintenanceMans\":\"李四\",\"faultLocation\":\"\",\"record\":\"\",\"safetyMeasure\":\"发顺丰打大师傅撒旦发阿斯顿发顺丰打啊\",\"applyMan\":\"\",\"faultDetail\":\"\",\"maintenanceMethod\":\"阿斯顿发生阿斯蒂芬阿三\",\"applyTime\":\"\",\"stopSystem\":\"\",\"confirm\":\"123\"}]}}";
	        fillDate(dataMap,maintenanceData);
	        /** 指定输出word文件的路径 **/
	        String outFilePath = "G:\\freemarker导出word\\2\\消防设施故障维修记录表.doc";
	        File docFile = new File(outFilePath);
	        FileOutputStream fos = new FileOutputStream(docFile);
	        Writer out = new BufferedWriter(new OutputStreamWriter(fos, "utf-8"),10240);
	        template.process(dataMap,out);

	        if(out != null){
	            out.close();
	        }
	 }

	private static void fillDate(Map<String,Object> dataMap,String maintenanceData) {
		@SuppressWarnings("static-access")
		JSONObject obj = new JSONObject().fromObject(maintenanceData);//将json字符串转换为json对象
		JSONObject emergencyMaintenanceObj = obj.getJSONObject("emergencyMaintenanceItem");
	
		EmergencyMaintenanceItem emergencyMaintenanceItem = (EmergencyMaintenanceItem)JSONObject.toBean(emergencyMaintenanceObj,EmergencyMaintenanceItem.class);
		dataMap.put("emergencyMaintenanceItem",emergencyMaintenanceItem);
 
	}
}

  

转载于:https://www.cnblogs.com/skj0330insn/p/10399534.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值