將要導(dǎo)出的Word另存為xml格式的文件,打開xml 在其中添加freemarker標(biāo)簽,然后另存為outChairDoc.ftl文件.
第一步要加入Freemarker.jar包。
Servlet代碼如下:在outChairDoc.ftl放在包cn.skyclass.jiaowu.freemarker.template下
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");
try {
createDoc(response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void createDoc(HttpServletResponse response) throws Exception {
// 要填入模本的數(shù)據(jù)文件
Map dataMap = new HashMap();
dataMap.put("docTitle", "fdfdfdfdfdfdf用戶信息");
List list = new ArrayList();
ChairInfo chairInfo = new ChairInfo();
chairInfo.setChairTitle("dfdfd");
chairInfo.setTeacherName("tea");
chairInfo.setStartTime(new Date());
chairInfo.setPlace("dfdfd");
list.add(chairInfo);
dataMap.put("chairInfoList", list);
// 設(shè)置模本裝置方法和路徑,FreeMarker支持多種模板裝載方法。可以重servlet,classpath,數(shù)據(jù)庫裝載,
// 這里我們的模板是放在com.havenliu.document.template包下面
configuration.setClassForTemplateLoading(this.getClass(),
"/cn/skyclass/jiaowu/freemarker/template");
Template t = null;
try {
// test.ftl為要裝載的模板
t = configuration.getTemplate("outChairDoc.ftl");
t.setEncoding("utf-8");
} catch (IOException e) {
e.printStackTrace();
}
// 輸出文檔路徑及名稱
String fileName="講座列表.doc";
response.setContentType("application/msword");
response.addHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));//可防止導(dǎo)出的文件亂碼
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
t.process(dataMap, out);
out.close();
}