最近项目需要,生成的数据需要按照word 模板去生成相应的word文档。差了几个资料。发现以下两个博客解决了项目上的需求。地址如下
Java中根据模板导出数据到word的解决方案
http://blog.csdn.net/myyate/article/details/2049701
另一个是
jsp结合Velocity依据Word模板文件产生对应的数据文件
http://blog.csdn.net/Matol/article/details/6052555
部署tomcat项目可以参考
http://www.ibm.com/developerworks/cn/java/j-velocity/#5
velocity vm 模板 根据word另存为 mht文件后。修改mht代码 生成vm文件即可
服务器部分代码如下:
public String execute() throws Exception { ServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); String sjid = (String) request.getParameter("sjid"); dhjldVo = this.dhjlManager.get(sjid); // 初始化并取得Velocity引擎 VelocityEngine ve = new VelocityEngine(); // 取得velocity的模版 // String fileDir = DhjlQueryAction.class.getResource("/template").getPath(); Properties properties = new Properties(); //System.out.println("fileDirfileDi~~~"+fileDir); properties.setProperty(ve.FILE_RESOURCE_LOADER_PATH,"\\template\\"); //指定,如"D:/template",但记住只要指定到文件夹就行了 ve.init(properties); //初始化 //// 取得velocity的模版 如果有汉字 用 GBK 否则可能出现乱码 Template t = ve.getTemplate("hellovelocity.vm","GBK");//此处只要指明文件名就可以了. // 取得velocity的上下文context VelocityContext context = new VelocityContext(); // 把数据填入上下文 context.put("name", "潘"); context.put("date", (new Date()).toString()); // 为后面的展示,提前输入List数值 List temp = new ArrayList(); temp.add("1"); temp.add("2"); context.put("list", temp); // 输出流 注释部分代码为 将流写入到服务器的文件 /* PrintWriter writer = new PrintWriter("E://单点登录.doc","UTF-8"); t.merge(context, writer); writer.flush(); writer.close(); */ //此部分代码为 生产一个下载流 客户端页面会 弹出 另存为的对话框 response.setHeader("content-disposition", "attachment;filename=ldws.doc" ); response.setContentType("application/msword;"); response.setCharacterEncoding("GBK"); StringWriter writer =new StringWriter(); // 转换输出 t.merge(context, writer); response.getOutputStream().print(writer.toString()); return null; }