一,首先制作模板

  1.先做一个Word文档,

  2.打开Word,然后另存为*.xml文件

  3.最后修改*.xml文件的后缀名为*.ftl

二,打开项目编辑器Idea,在pom文件中引入相关架包依赖(我这里用的是maven)

  

  <dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-scratchpad</artifactId>
  <version>3.8</version>
  </dependency>
  <dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-ooxml</artifactId>
   <version>3.8</version>
  </dependency> //下面是gradle的引入格式,可根据自己需要使用相应方式
(compile group: 'org.apache.poi', name: 'poi', version: '3.14')

三,以上准备完毕开始编写代码

 以下是接口中应写内容=> 

  Map<String, Object> dataMap = new HashMap<String, Object>();
  Configuration configuration = new Configuration(Configuration.VERSION_2_3_22);
  configuration.setDefaultEncoding("utf-8");   //得到需要传入Word文件中的相关内容数据
  //user为数据对象,getUser()为查询数据的方法,在用的时候换成自己的对应方法即可
  User user=useruserService.useruserService.getUser();
  if(user.getName()!=null && !user.getName().equals("")){
  dataMap.put("name",user.getName());
  }
  if(user.getSex()!=null && !user.getSex().equals("")){
   dataMap.put("sex",user.getSex());
  }
  if(user.getAge()!=null && !user.getAge().equals("")){
   dataMap.put("age",user.getAge());
  }
  //还有更多属性...大家可根据自己的实际需求进行添加   //得到模板位置(因为实际环境中模板可能较多,所以一般都是有一个专属的文件夹用来存放模板(template))
  configuration.setClassForTemplateLoading(this.getClass(), "/template");
  Template t = null;
  File outFile = null;   //创建一个文件路径,用来存放生成的相关文件
  File myFilePath=new File(fileUploadPath+"/projects/"+projectsDto.getId()+"/file/");
  if(!myFilePath.exists()){
   myFilePath.mkdir();
  }   //创建新文件
  String path="../../"+"新文件.doc";
  t=configuration.getTemplate("模板文件.ftl","UTF-8");
  outFile=new File("../../../"+"新文件.doc");   Writer out = null;
  out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));
  // 生成文件
  t.process(dataMap, out);
  // 关闭流
  out.flush();
  out.close();
  //path是返回给前端找到这个文件的一个路径
  return path;

注:在制作模板的时候最好在需要传入值得地方做好标记,这样在ftl中找对应位置的时候会方便许多
  ftl文件中对应字段属性位置的格式(name对应代码中dataMap中相应的键值)


Java根据模板生成Word文档的更多相关文章

  1. java通过word模板生成word文档

    介绍 上次公司项目需要一个生成word文档的功能,有固定的模板根据业务填充数据即可,由于从来没做过,项目也比较着急于是去网上找有没有合适的工具类,找了好几种,看到其中有freeMark模板生成比较靠谱 ...

  2. java使用freemarker 生成word文档

      java 生成word文档     最近需要做一个导出word的功能, 在网上搜了下, 有用POI,JXL,iText等jar生成一个word文件然后将数据写到该文件中,API非常繁琐而且拼出来的 ...

  3. JAVAWEB使用FreeMarker利用ftl把含有图片的word模板生成word文档,然后打包成压缩包进行下载

    这是写的另一个导出word方法:https://www.cnblogs.com/pxblog/p/13072711.html 引入jar包,freemarker.jar.apache-ant-zip- ...

  4. JAVA Freemarker + Word 模板 生成 Word 文档 (普通的变量替换,数据的循环,表格数据的循环,以及图片的东替换)

    1,最近有个需求,动态生成 Word 文当并供前端下载,网上找了一下,发现基本都是用 word 生成 xml 然后用模板替换变量的方式 1.1,这种方式虽然可行,但是生成的 xml 是在是太乱了,整理 ...

  5. JAVA Asponse.Word Office 操作神器,借助 word 模板生成 word 文档,并转化为 pdf,png 等多种格式的文件

    一,由于该 jar 包不是免费的, maven 仓库一般不会有,需要我们去官网下载并安装到本地 maven 仓库 1,用地址   https://www-evget-com/product/564  ...

  6. 使用freemarker模板生成word文档

    项目中最近用到这个东西,做下记录. 如下图,先准备好一个(office2003)word文档当做模板.文档中图片.姓名.性别和生日已经使用占位符代替,生成过程中将会根据实际情况进行替换. 然后将wor ...

  7. java使用freemarker生成word文档

    1.原料 开源jar包freemarker.eclipse.一份模板word文档 2.首先设计模板word文档 一般,通过程序输出的word文档的格式是固定的,例如建立一个表格,将表格的标题写好,表格 ...

  8. java基于feemarker 生成word文档(超级简单)

    问题由来: 开发个新需求,需要按规定导出word文档,文档截图如下 因为之前没做过这个,一脸懵B啊,导出excel和txt倒是经常接触到,对于这个word这种格式不严谨的文件怎么处理呢? 技术选型:可 ...

  9. poi根据模板导出word文档

    POI结构与常用类 Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. .NET的开发人员则可以利用NPOI ...

随机推荐

  1. 第二章-数据绑定和第一个AnglarJS Web应用

    Angularjs中的数据绑定 AngularJS创建实时模板来代替视图,而不是将数据合并进模板之后更新DOM.任何一个独立视图组件中的值都是动态替换的.这个功能可以说是AngularJS中最最重要的 ...

  2. TopK (MinK) 实现

    概述:基于快排原理找到最小的K个元素,属于Top K问题.注意,使用快排原理找前K小问题不需要对整个数组进行O(nlogn)的排序.我们只要找K所在的区间进行递归调用,即每次只要对数据的一半进行递归调 ...

  3. 大数据平台比较-CDH,HDP

    主要的不同点 apache Ambari ClouderaManager Express(免费版) 配置版本控制和历史记录 支持 不支持 二次开发 支持 不支持 集成 支持 no (不支持redis. ...

  4. Python 每日一练(2)

    引言 我又双叒叕的来啦,新博客的第二篇文章,这次是继之前公众号上每日一练的第二个,这次是专题实对于文件的一些处理的练习 主要有以下几类: 1.实现英文文章字频统计 2.统一剪裁某一指定目录下的所有图片 ...

  5. 【译】Gartner CWPP市场指南

    https://www.gartner.com/doc/reprints?id=1-1YSHGBQ8&ct=200416&st=sb?utm_source=marketo&ut ...

  6. Nexus Repository Manager 3(CVE-2019-7238) 远程代码执行漏洞复现

    0x00 漏洞背景 Nexus Repository Manager 3是一款软件仓库,可以用来存储和分发Maven,NuGET等软件源仓库.其3.14.0及之前版本中,存在一处基于OrientDB自 ...

  7. 06 . Nginx静态资源缓存

    Nginx静态资源 Nginx可以处理静态资源 非Web服务器可以运行处理而生成的文件,即服务器只需要从硬盘或者缓存中读取然后直接给客户端响应即可. 常见的静态资源 # 浏览器渲染: html文件,样 ...

  8. 15期day01编程与计算机硬件

    一.编程: 1,编程语言:定义:让计算机能像人一样去工作执行某种命令的语音 重点:工作的思维逻辑 编程语言为翻译 简单逻辑汉语 小例子: 接收用户输入的用户名 接收用户输入的密码 判断用户输入的用户名 ...

  9. Rocket - diplomacy - AddressSet

    https://mp.weixin.qq.com/s/ZsEVt1GslL7ufJdJlgpfNQ   介绍AddressSet的实现.   ​​   1. 基本定义   ​​ 使用base/mask ...

  10. Java实现 LeetCode 652 寻找重复的子树(两个map的DFS)

    652. 寻找重复的子树 给定一棵二叉树,返回所有重复的子树.对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可. 两棵树重复是指它们具有相同的结构以及相同的结点值. 示例 1: 1 / \ ...