发布网友 发布时间:2022-04-24 09:33
共1个回答
热心网友 时间:2022-04-15 19:58
将要导出的Word另存为xml格式的文件,打开xml 在其中添加freemarker标签,然后另存为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 {
// 要填入模本的数据文件
Map dataMap = new HashMap();
dataMap.put("docTitle", "fdfdfdfdfdfdf用户信息");
List<ChairInfo> list = new ArrayList<ChairInfo>();
ChairInfo chairInfo = new ChairInfo();
chairInfo.setChairTitle("dfdfd");
chairInfo.setTeacherName("tea");
chairInfo.setStartTime(new Date());
chairInfo.setPlace("dfdfd");
list.add(chairInfo);
dataMap.put("chairInfoList", list);
// 设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载,
// 这里我们的模板是放在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"));//可防止导出的文件乱码
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
t.process(dataMap, out);
out.close();
}