一,首先制作模板

  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. layui 数据表格按钮事件绑定和渲染

    先看效果图 使用两种渲染方法: 1.toolbar引入模板 顶部的添加和删除按钮,右侧的三个筛选,打印,导出按钮 基础参数属性:toolbar:'#demo2', //创建 删除 添加按钮模板 < ...

  2. 关于mantisBT2.22安装插件Inline column configuration 2.0.0时提示缺少依赖jQuery UI Library 1.8

    1.首先直接下载最新的那个1.12即可 https://github.com/mantisbt-plugins/jQuery-UI/releases 2.上传到mantis的插件目录下:……manti ...

  3. 题解 P6509 【[CRCI2007-2008] JEDNAKOST】

    洛谷题目传送门!! 洛谷博客!! 这道题感觉是一个很另类的DP  至少我的做法是这样的. 重要前置思想:把A存成字符串!!! (应该也没人会想着存成int和long long 吧) 首先,我们定义状态 ...

  4. WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping 异常详细信息: System.InvalidOperationException: WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的

    WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping.请添加一个名为 jquery (区分大小写)的 ScriptRes ...

  5. VUE 子组件向父组件传值 , 并且触发父组件方法(函数)

    目标:封装一个  搜索组件 <子组件需要传一个或者多个搜索参数到父组件,然后父组件执行列表查询函数> 1.子组件 <div> <input v-model="l ...

  6. Rocket - diplomacy - enumerateBits

    https://mp.weixin.qq.com/s/KsZqe9W_DM6W6JecK_irvA   介绍AddressSet.enumerateBits方法的实现,主要是x & (-x)的 ...

  7. Java 第十一届 蓝桥杯 省模拟赛 洁净数

    洁净数 小明非常不喜欢数字 2,包括那些数位上包含数字 2 的数.如果一个数的数位不包含数字 2,小明将它称为洁净数. 请问在整数 1 至 n 中,洁净数有多少个? 输入格式 输入的第一行包含一个整数 ...

  8. Java实现 LeetCode 657 机器人能否返回原点(暴力大法)

    657. 机器人能否返回原点 在二维平面上,有一个机器人从原点 (0, 0) 开始.给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束. 移动顺序由字符串表示.字符 move[i ...

  9. java实现 蓝桥杯 算法提高 盾神与条状项链

    问题描述 有一天,盾神捡到了好多好多五颜六色的珠子!他心想这些珠子这么漂亮,可以做成一条项链然后送给他心仪的女生~于是他用其中一些珠子做成了长度为n的项链.当他准备把项链首尾相接的时候,土方进来了. ...

  10. java实现排座位

    ** 排座位** 要安排:3个A国人,3个B国人,3个C国人坐成一排. 要求不能使连续的3个人是同一个国籍. 求所有不同方案的总数? 参考答案: 283824 public class Main1 { ...