Java使用freeMarker生成Word
来源:互联网 发布:linux查看当前进程 编辑:程序博客网 时间:2024/05/17 04:00
1.导入freeMarker的jar
2.拿到一个Word文档,
1.将需要动态改变的值改了${变量},
2.点击另存为选择xml保存为xml格式的,最后最把后缀改为ftl
3.
主要的工具类
public class WordUtils { //配置信息,代码本身写的还是很可读的,就不过多注解了 private static Configuration configuration = null; //这里注意的是利用WordUtils的类加载器动态获得模板文件的位置 private static final String templateFolder = WordUtils.class.getClassLoader().getResource("../../").getPath() + "asserts/templete/"; static { configuration = new Configuration(); configuration.setDefaultEncoding("utf-8"); try { configuration.setDirectoryForTemplateLoading(new File(templateFolder)); } catch (IOException e) { e.printStackTrace(); } } private WordUtils() { throw new AssertionError(); } public static void exportWord(HttpServletRequest request, HttpServletResponse response, Map map) throws IOException { Template freemarkerTemplate = configuration.getTemplate("test.ftl"); File file = null; InputStream fin = null; ServletOutputStream out = null; try { // 调用工具类的createDoc方法生成Word文档 file = createDoc(map,freemarkerTemplate); fin = new FileInputStream(file); response.setCharacterEncoding("utf-8"); response.setContentType("application/msword"); // 设置浏览器以下载的方式处理该文件名 String fileName = "自己想写的名字.doc"; response.setHeader("Content-Disposition", "attachment;filename=" .concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8")))); out = response.getOutputStream(); byte[] buffer = new byte[512]; // 缓冲区 int bytesToRead = -1; // 通过循环将读入的Word文件的内容输出到浏览器中 while((bytesToRead = fin.read(buffer)) != -1) { out.write(buffer, 0, bytesToRead); } } finally { if(fin != null) fin.close(); if(out != null) out.close(); if(file != null) file.delete(); // 删除临时文件 } } private static File createDoc(Map<?, ?> dataMap, Template template) { String name = "test.doc"; File f = new File(name); Template t = template; try { Writer w = new OutputStreamWriter(new FileOutputStream(f), "utf-8"); t.process(dataMap, w); w.close(); } catch (Exception ex) { ex.printStackTrace(); throw new RuntimeException(ex); } return f; } }
@RequestMapping(value = "exportWord", method = RequestMethod.GET) @ResponseBody public void exportWord(HttpServletRequest request, HttpServletResponse response) throws Exception { Map<String, Object> map = new HashMap<String, Object>(); map.put("name","jack"); map.put("age","20"); WordUtils.exportWord(request,response,map); }5.前端
function export(id) { window.location.href = '../word/exportWord?id=' + id; }
用ajax会出差?
阅读全文
0 0
- java 使用freemarker生成word
- Java使用freeMarker生成Word
- 利用Freemarker生成word的使用(java)
- java 使用freemarker 生成word模板
- java使用 freemarker 模板生成word文件
- java生成word之freemarker使用
- 关于Freemarker生成word的使用 java生成word
- 使用Freemarker生成Word
- 使用freemarker生成word
- 使用freemarker生成word
- 使用freemarker生成word
- Java Freemarker生成word
- java实现word套打(关于Freemarker生成word的使用(java生成word))
- 使用FreeMarker生成word文档
- 使用FreeMarker生成Word文档
- java 生成word应用freemarker
- Java Web项目中使用Freemarker生成Word文档
- Java Web项目中使用Freemarker模版生成Word文档
- C#——语言基础——数组
- 如何将项目发布到Tomcat的webapps目录下
- 剑指offer-反转链表
- 费用流——BZOJ1877/Luogu2153 [SDOI2009]晨跑
- Excel应用-术语管理模板(记录单新建记录功能的VBA实现)
- Java使用freeMarker生成Word
- JavaScript中正则表达式常见使用函数
- Set 小结
- 解决EasyUI的datagrid控件显示日期问题
- bzoj 4498 魔法的碰撞
- java取整和java四舍五入方法 BigDecimal.setScale()方法详解.
- FFOS cs call
- android binder机制---Java层获取ServiceManager
- 拜小白教你OpenCV3.2.0+VS2017开发环境配置