freemarker导出word档
1.word另存为xml;2.xml文件后缀名改成ftl;3.编写完整json字符串备用;4.修改ftl中动态字段为json中对应字段名;5.编写java代码自动生成word文件;(注意:换行用<w:br/>,word制作的可以兼容wps,反过来可能有兼容问题)
消防设施故障维修记录表.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); } }