java生成word 框勾_Java 使用模板生成 Word 文件---基于 Freemarker 模板框架
Java項目引入 Freemarker 插件自行完成。
步驟如下:
1、編寫 Word 模板,并將模板中要用代碼動態生成數據用 Freemarker 變量取代,即${變量名},如${username};
2、把該 word 文檔 另存為 xml 文件(格式選擇 Word 2003 XML,注意是另存為,不是改擴展名為 xml),然后再改擴展名為 ftl;
3、用編輯軟件打開最后的 ftl 文件,并用查找功能查找第一步中定義的變量名,如:username,
就會發現 Word 軟件在將 Word 轉為 xml 過程中,在${username}之前插入了很過多余的字符(通常是 Word 中帶有的格式),將第一步中定義的所有變量名全部還原為${變量名} 的格式,即:刪除${username} 插入的多余字符。這步特別重要,直接決定了后面能夠正確將數據落到模板中。
如下圖:${username}? 之間被插入了很多的格式字符,所以需要將黃線部分的字符串刪除。
4、執行代碼,將模板中的變量用數據填充進去
importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStreamWriter;importjava.io.Writer;importjava.util.HashMap;importjava.util.Map;importfreemarker.template.Configuration;importfreemarker.template.Template;public classFreeMarkerUtils {public static voidmain(String[] args) {try{
Map dataMap = new HashMap();
dataMap.put("clinicName", "愛齒口腔(濱海門診部)");
dataMap.put("username", "張三");
dataMap.put("phone", "23456789876");
dataMap.put("IDNo", "130803299911211789");
dataMap.put("gender", "男");
dataMap.put("birthday", "1998-11-21");
dataMap.put("RightUp", "右上1");
dataMap.put("LeftUp", "左上1");
dataMap.put("RightDown", "右下1");
dataMap.put("LeftDown", "左上1");
dataMap.put("opearationDate", "2019-11-01");
dataMap.put("amountDaXie", "壹佰伍拾元整");
dataMap.put("amount", "150.00");
dataMap.put("currentDate", "2019年11月01日");
dataMap.put("currentDate", "2019年11月01日");
Configuration configuration= newConfiguration();
configuration.setDefaultEncoding("utf-8");//指定模板路徑的第二種方式,我的路徑是D:/ 還有其他方式
configuration.setDirectoryForTemplateLoading(new File("C:/Users/user/Desktop"));//輸出文檔路徑及名稱
File outFile = new File("D:/test.doc");//以utf-8的編碼讀取ftl文件
Template t = configuration.getTemplate("6_種植牙手術意外投保單(4)-2003-3.ftl","utf-8");
Writer out= new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"),10240);
t.process(dataMap, out);
out.close();
}catch(IOException e) {
e.printStackTrace();
}catch(Exception e) {
e.printStackTrace();
}
}
}
參考:
原文鏈接:
總結
以上是生活随笔為你收集整理的java生成word 框勾_Java 使用模板生成 Word 文件---基于 Freemarker 模板框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java代码分类_08 java代码块的
- 下一篇: JAVA报错是一层一层的吗_Java异常