資源簡介
使用freemarker技術,首先將word模板另存為xml文檔,方便填充數據。然后將后綴名改為ftl,簡單方便.

代碼片段和文件信息
package?net.laokboke.freemarker;
import?java.io.BufferedWriter;
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.FileOutputStream;
import?java.io.IOException;
import?java.io.InputStream;
import?java.io.OutputStreamWriter;
import?java.io.Writer;
import?java.util.ArrayList;
import?java.util.HashMap;
import?java.util.List;
import?java.util.Map;
import?sun.misc.base64Encoder;
import?freemarker.template.Configuration;
import?freemarker.template.DefaultobjectWrapper;
import?freemarker.template.Template;
import?freemarker.template.TemplateException;
public?class?ExportToWord?{
//classpath的文件路徑?
????private?static?String?cp?=?“/resources“;?
public?void?export(){
Configuration?cfg?=?new?Configuration();
cfg.setDefaultEncoding(“UTF-8“);
ExportToWord?etw?=?new?ExportToWord();
try?{
//?指定模板文件從何處加載的數據源,這里設置成一個文件目錄。
cfg.setDirectoryForTemplateLoading(new?File(ExportToWord.class.getResource(cp).getFile()));
//?指定模板如何檢索數據模型,這是一個高級的主題了…
//?但先可以這么來用:
cfg.setobjectWrapper(new?DefaultobjectWrapper());
Template?temp?=?cfg.getTemplate(“word.ftl“);
Writer?writer?=?etw.getWriter(““+System.currentTimeMillis());
Map?m?=?etw.getData();
etw.createDoc(temp?m?writer);
}?catch?(IOException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}?
}
public?void?insertImageIntoWord(){
Configuration?cfg?=?new?Configuration();
cfg.setDefaultEncoding(“UTF-8“);
ExportToWord?etw?=?new?ExportToWord();
try?{
//?指定模板文件從何處加載的數據源,這里設置成一個文件目錄。
cfg.setDirectoryForTemplateLoading(new?File(ExportToWord.class.getResource(cp).getFile()));
//?指定模板如何檢索數據模型,這是一個高級的主題了…
//?但先可以這么來用:
cfg.setobjectWrapper(new?DefaultobjectWrapper());
Template?temp?=?cfg.getTemplate(“images.ftl“);
Writer?writer?=?etw.getWriter(““+System.currentTimeMillis());
Map?m?=?new?HashMap();
String?imageStr?=?etw.getImageStr();
m.put(“image“?imageStr);
etw.createDoc(temp?m?writer);
}?catch?(IOException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}?
}
public?Writer?getWriter(String?time){
//?輸出文檔路徑及名稱
String?savePath?=?ExportToWord.class.getResource(cp).getPath();
System.out.println(“savePath=“+savePath);
File?file?=?new?File(savePath+“/upload“);
if(!file.exists()){
file.mkdirs();
}
File?outFile?=?new?File(savePath+“/upload/“+time+“.doc“);
Writer?out?=?null;
try?{
out?=?new?BufferedWriter(new?OutputStreamWriter(new?FileOutputStream(outFile)?“utf-8“));
}?catch?(Exception?e1)?{
e1.printStackTrace();
}
return?out;
}
public?void?createDoc(Template?tMap?dataMapWriter?out)?{
try?{
t.process(dataMap?out);
out.flush();
out.close();
}?catch?(TemplateException?e)?{
e.printStackTrace();
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
/**
?*?讀取圖片并生成相應的字符串
?*?@r
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-06-09?22:12??xm
?????文件?????????435??2013-06-07?17:19??xm
?????目錄???????????0??2013-06-09?15:58??xm
?????文件?????????294??2013-06-09?22:12??xm
?????文件????????1009??2013-06-07?17:11??xm
?????目錄???????????0??2013-06-09?22:12??xm
?????文件?????????167??2013-06-09?22:33??xm
?????目錄???????????0??2013-06-09?22:04??xm
?????目錄???????????0??2013-06-09?22:04??xm
?????目錄???????????0??2013-06-09?22:04??xm
?????目錄???????????0??2013-06-09?22:04??xm
?????文件????????4630??2013-06-09?15:32??xm
?????目錄???????????0??2013-06-09?22:04??xm
?????文件???????17502??2013-06-09?15:32??xm
?????文件??????212678??2013-06-09?22:02??xm
?????文件???????59497??2013-06-09?14:49??xm
?????目錄???????????0??2013-06-09?22:04??xm
?????文件?????????834??2013-06-09?10:53??xm
?????目錄???????????0??2013-06-09?22:04??xm
?????文件??????????39??2013-06-07?17:11??xm
?????文件???????17450??2013-06-09?15:15??xm
?????目錄???????????0??2013-06-09?22:04??xm
?????目錄???????????0??2013-06-09?22:12??xm
?????目錄???????????0??2013-06-09?22:12??xm
?????目錄???????????0??2013-06-09?22:12??xm
?????目錄???????????0??2013-06-09?22:12??xm
?????文件????????5246??2013-06-09?22:12??xm
?????目錄???????????0??2013-06-09?22:33??xm
?????文件???????17502??2013-06-09?15:32??xm
?????文件??????212678??2013-06-09?22:02??xm
?????目錄???????????0??2013-06-09?22:14??xm
............此處省略5個文件信息
評論
共有 條評論