標籤:
1.下載freemarker-2.3.19.jar
2.把要填充的內容用 ${title},${no}代替
3.用word 開啟,儲存為2003xml
4.開啟產生xml檔案,看下有沒有把運算式 ${title},${no} 分開,如果分開了,那麼要合并,最後儲存為ftl檔案
5.代碼
public class DocUitlsDemo{ private Configuration configuration=null; public DocUitlsDemo(){ configuration=new Configuration();// configuration.setClassicCompatible(false);//空值處理 configuration.setDefaultEncoding("UTF-8"); } /** * 產生word * @param tmplatePath 模板的路徑 /com/document/temlpate * @param templateName "text.ftl" * @param data map集合的資料 * @param outputFile 檔案輸出路徑 * @throws Exception */ public void createDoc(File tmplatePath,String templateName,Map<?,?> data,File outputFile) throws Exception { //設定模本裝置方法和路徑,FreeMarker支援多種模板裝載方法。可以重servlet,classpath,資料庫裝載, //這裡我們的模板是放在com.havenliu.document.template包下面 configuration.setDirectoryForTemplateLoading(tmplatePath); Template t=null; t = configuration.getTemplate(templateName); //輸出文檔路徑及名稱 Writer out = null; //解決出現亂碼 out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile),"UTF-8")); t.process(data, out); out.close(); } public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); int year=calendar.get(Calendar.YEAR); int month=calendar.get(Calendar.MONTH)+1; int day=calendar.get(Calendar.DAY_OF_MONTH); DocUitlsDemo demo=new DocUitlsDemo(); Map<String , Object>data=new HashMap<String, Object>(); data.put("no", "gk001"); data.put("year", year+"");//這裡的年份要用字串來表示,不然的話,就當成數字了,會有 逗號的 data.put("month", month); data.put("day", day); data.put("title", "2015-1-1"); File tmplatePath=new File("d://"); String tempalteName="template.ftl"; File outputFile=new File(tmplatePath,"xx合約.doc"); try { demo.createDoc(tmplatePath, tempalteName, data, outputFile); } catch (Exception e) { e.printStackTrace(); } System.out.println("產生成功"); }}
java freemark產生word文檔