分为以下三个步骤:

1.先制作word模板

2.将该文档另存为 xml 文件

3.打开xml 文件

将对应的字段替换,比如

4.将xml文件保存成ftl格式的文档

5.相应的代码:

  1. package org.lq.ssm.gp.controller;
  2.  
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileNotFoundException;
  7. import java.io.FileOutputStream;
  8. import java.io.IOException;
  9. import java.io.InputStream;
  10. import java.io.OutputStreamWriter;
  11. import java.io.Writer;
  12. import java.util.ArrayList;
  13. import java.util.HashMap;
  14. import java.util.List;
  15. import java.util.Map;
  16.  
  17. import sun.misc.BASE64Encoder;
  18.  
  19. import freemarker.template.Configuration;
  20. import freemarker.template.Template;
  21. import freemarker.template.TemplateException;
  22.  
  23. public class wordController {
  24.  
  25. private Configuration configuration = null;
  26.  
  27. public wordController(){
  28. configuration = new Configuration();
  29. configuration.setDefaultEncoding("UTF-8");
  30. }
  31.  
  32. public static void main(String[] args) {
  33. wordController test = new wordController();
  34. test.createWord();
  35. }
  36.  
  37. public void createWord(){
  38. Map<String,Object> dataMap=new HashMap<String,Object>();
  39. getData(dataMap);
  40.  
  41. System.out.println(this.getClass().getResource("/util"));
  42. configuration.setClassForTemplateLoading(this.getClass(), "/controller"); //FTL文件所存在的位置
  43. Template t=null;
  44. try {
  45.  
  46. t = configuration.getTemplate("baodan2.ftl"); //文件名
  47. } catch (IOException e) {
  48. e.printStackTrace();
  49. }
  50. File outFile = new File("H:/baodan/baodan.doc");
  51. Writer out = null;
  52. try {
  53. out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
  54. } catch (FileNotFoundException e1) {
  55. e1.printStackTrace();
  56. }
  57.  
  58. try {
  59. t.process(dataMap, out);
  60. } catch (TemplateException e) {
  61. e.printStackTrace();
  62. } catch (IOException e) {
  63. e.printStackTrace();
  64. }
  65. }
  66.  
  67. private void getData(Map<String, Object> dataMap) {
  68.  
  69. List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
  70. dataMap.put("name", "");
  71. dataMap.put("username", "");
  72. dataMap.put("userzjh", "");
  73. dataMap.put("userQygs", "");
  74. dataMap.put("image", getImageStr());
  75.  
  76. }
  77. private String getImageStr() {
  78. String imgFile = "H:\\JT1.jpg";
  79.  
  80. InputStream in = null;
  81. byte[] data = null;
  82. try {
  83. in = new FileInputStream(imgFile);
  84. data = new byte[in.available()];
  85. in.read(data);
  86. in.close();
  87. } catch (IOException e) {
  88. e.printStackTrace();
  89. }
  90. BASE64Encoder encoder = new BASE64Encoder();
  91. return encoder.encode(data);
  92. }
  93.  
  94. }

java用freemarker实现导出word----包含图片的更多相关文章

  1. Java 用Freemarker完美导出word文档(带图片)

    Java  用Freemarker完美导出word文档(带图片) 前言 最近在项目中,因客户要求,将页面内容(如合同协议)导出成word,在网上翻了好多,感觉太乱了,不过最后还是较好解决了这个问题. ...

  2. 【java】Freemarker 动态生成word(带图片表格)

    1.添加freemarker.jar 到java项目. 2.新建word文档. 3.将文档另存为xml 格式. 4.将xml格式化后打开编辑(最好用notepad,有格式),找到需要替换的内容,将内容 ...

  3. java使用freemarker模板导出word(带有合并单元格)文档

    来自:https://blog.csdn.net/qq_33195578/article/details/73790283 前言:最近要做一个导出word功能,其实网上有很多的例子,但是我需要的是合并 ...

  4. 【Java】用Freemarker完美导出word文档(带图片)

    Java  用Freemarker完美导出word文档(带图片) 前言 最近在项目中,因客户要求,将页面内容(如合同协议)导出成word,在网上翻了好多,感觉太乱了,不过最后还是较好解决了这个问题. ...

  5. freemarker导出word带图片

    导出word带图片 如果你需要在word中添加图片,那你就在第一步制作模板时,加入一张图片占位,然后打开xml文档,可以看到如下的一片base64编码后的代码: <w:binData w:nam ...

  6. java导出word(带图片)

    public class CreateWordDemo { public void createDocContext(String file) throws DocumentException,IOE ...

  7. FreeMarker + xml 导出word

    转载自:http://hongqiang.iteye.com/blog/1632998 首先介绍几种java导出word方案 1.Jacob是Java-COM Bridge的缩写,它在Java与微软的 ...

  8. java用freemarker实现导出excel

    前几天做了jxl导出excel,现在用freemarker做一下 freemarker导出excel和导出word步骤和是实现方法是相同的. 1.制作excel模板 2.将后缀名改为ftl,放到对应的 ...

  9. java工具类POI导出word

    1.新建一个word,里面填写内容,如: 2.导出wordjava类 /** * POI导出word测试 * @throws Exception */ @RequestMapping(value=&q ...

随机推荐

  1. echarts图表属性说明

    参考博客: https://blog.csdn.net/luanpeng825485697/article/details/76691965

  2. array_combine php一个比较偏门的数组函数

    这函数  返回数组1的值 当做key,把数组2的值当做value,   当查询数据库用了 group +GROUP_CONCAT 两个组合时,(例如查询某个班级的,用户名,用户id,返回的是字符串,打 ...

  3. mysql5.7官网直译SQL语句优化--select语句优化

    8.2 sql语句优化 大致内容如下: 8.2.1:SELECT语句的优化 8.2.2:优化子查询,派生表和试图引用 8.2.3:优化INFORMATION_SCHEMA查询 8.2.4:优化数据改变 ...

  4. [AngularJS]Chapter 2 剖析安哥拉JS应用程序

    不同于普通的框架,你可以从中选择你想用的方法.在anjular中是不同组件写作工作的.这章中,你会看到anjular中基本的组成部分并且理解他们是如何协同工作的.很多组件会在以后的章节中详细讲解.[开 ...

  5. Git 时间,将代码托管到GitHub 上

    第一步:在github上创建一个项目,选择所属类型.会自动生成下面的文件. 第二步:使用安卓创建项目 第三步:使用git bash 进入项目目录,通过指令clone到本地 克隆完成后会出现下面的内容 ...

  6. PyCharm基本设置、常用快捷键

    1. 下载安装 PyCharm官方下载地址:  https://www.jetbrains.com/pycharm/download/index.html#section=windows 安装完成后在 ...

  7. javascript系列-class10.DOM(下)

    1.node节点(更详细的获取(设置)页面中所有的内容)         根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点:   元素是节点的别称,节点包含元素当然节点还有 ...

  8. [JZOJ 5885] [NOIP2018模拟9.27] 物理实验 解题报告 (思维)

    题目链接: https://jzoj.net/senior/#main/show/5885 题目: 题解: 把$a$数组按升序排序 我们可以枚举$x$,发现对于任意$x$,最优情况下$y$一定等于$x ...

  9. Kettle学习系列之数据仓库、数据整合、ETL、ELT和EII之间的区别?

    不多说,直接上干货! 在数据仓库领域里,的一个重要概念就是数据整合(data intergration).数据整合它就是把不同数据库中的数据整合到一起,对外提供统一的数据视图. 数据整合最典型的案例就 ...

  10. excel文件使用html导出

    <table><tr><td>1</td></tr><tr><td>2</td></tr>& ...