Java根据模板生成Word文档
一,首先制作模板
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文档的更多相关文章
- java通过word模板生成word文档
介绍 上次公司项目需要一个生成word文档的功能,有固定的模板根据业务填充数据即可,由于从来没做过,项目也比较着急于是去网上找有没有合适的工具类,找了好几种,看到其中有freeMark模板生成比较靠谱 ...
- java使用freemarker 生成word文档
java 生成word文档 最近需要做一个导出word的功能, 在网上搜了下, 有用POI,JXL,iText等jar生成一个word文件然后将数据写到该文件中,API非常繁琐而且拼出来的 ...
- JAVAWEB使用FreeMarker利用ftl把含有图片的word模板生成word文档,然后打包成压缩包进行下载
这是写的另一个导出word方法:https://www.cnblogs.com/pxblog/p/13072711.html 引入jar包,freemarker.jar.apache-ant-zip- ...
- JAVA Freemarker + Word 模板 生成 Word 文档 (普通的变量替换,数据的循环,表格数据的循环,以及图片的东替换)
1,最近有个需求,动态生成 Word 文当并供前端下载,网上找了一下,发现基本都是用 word 生成 xml 然后用模板替换变量的方式 1.1,这种方式虽然可行,但是生成的 xml 是在是太乱了,整理 ...
- JAVA Asponse.Word Office 操作神器,借助 word 模板生成 word 文档,并转化为 pdf,png 等多种格式的文件
一,由于该 jar 包不是免费的, maven 仓库一般不会有,需要我们去官网下载并安装到本地 maven 仓库 1,用地址 https://www-evget-com/product/564 ...
- 使用freemarker模板生成word文档
项目中最近用到这个东西,做下记录. 如下图,先准备好一个(office2003)word文档当做模板.文档中图片.姓名.性别和生日已经使用占位符代替,生成过程中将会根据实际情况进行替换. 然后将wor ...
- java使用freemarker生成word文档
1.原料 开源jar包freemarker.eclipse.一份模板word文档 2.首先设计模板word文档 一般,通过程序输出的word文档的格式是固定的,例如建立一个表格,将表格的标题写好,表格 ...
- java基于feemarker 生成word文档(超级简单)
问题由来: 开发个新需求,需要按规定导出word文档,文档截图如下 因为之前没做过这个,一脸懵B啊,导出excel和txt倒是经常接触到,对于这个word这种格式不严谨的文件怎么处理呢? 技术选型:可 ...
- poi根据模板导出word文档
POI结构与常用类 Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. .NET的开发人员则可以利用NPOI ...
随机推荐
- layui table 数据表格固定列的行高和table其他列的行高不一致
1.问题描述:使用layui的table数据表格,固定某一列,这样表格中数据的宽度超出屏幕宽度时,固定列可以一直显示在屏幕中,不会随着底部滚动栏左右的拖动而变化位置.但是遇到一个问题,就是固定列的行高 ...
- Android_AndroidX简介&Junit4
AndroidX简介: Android 9.0(API level 28)发布时,AndroidX也作为一个新的支持库发布出来了.AndroidX时Jetpack的一部分,它包含了现有的支持库和最新的 ...
- [安卓基础] 001.学习Android开发的好教程
如果想自学android,有许多不错的android网站.这里收集了一些,列举如下: 国内 极客学院,这里有非常丰富的视频教程. http://www.jikexueyuan.com/course/a ...
- Linux(二):VMware虚拟机中Ubuntu安装详细过程
Linux(二):VMware虚拟机中Ubuntu安装详细过程 目录 1 准备 2 安装 2.1 虚拟机的建立 2.2 虚拟机安装Ubuntu系统 2.3 虚拟机设置 3 完成 1 准备 1.操作系统 ...
- 安卓全屏或沉浸式状态栏下输入框(EditText)被键盘遮挡解决方法
沉浸式状态栏用了一段时间了,一直没发现安卓在这方面的坑.最近在集成环信自定义UI的过程中,发现将环信界面设置为沉浸式之后最底部的消息输入框不随键盘弹起而变化了,一直显示在屏幕最下方,体验非常差. 后来 ...
- 50个SQL语句(MySQL版) 建表 插入数据
本学期正在学习数据库,前段时间老师让我们做一下50个经典SQL语句,当时做的比较快,有一些也是百度的,自我感觉理解的不是很透彻. 所以从本篇随笔开始,我将进行50个经典SQL语句的复盘,加深理解. 答 ...
- Rocket - interrupts - Xbar
https://mp.weixin.qq.com/s/icPGf4KdSOudwuNpLxdo7w 简单介绍Xbar的实现. 1. 简单介绍 IntXbar主要用于把上游多个中断源的中断组合在一起,然 ...
- Rocket - interrupts - Crossing
https://mp.weixin.qq.com/s/nSX4prXFb4K5GSUhPtOUCg 简单介绍Crossing的实现. 1. IntXing 这是一个LazyModule: 1) 参数 ...
- java继承会犯的小错误
注意事项:阅读本文前应该先了解java的继承.本文定位为已经继承基础知识. 一:试图覆盖私有方法 先上代码 public class Father { private void print() { S ...
- vim的常见操作
vim常见操作 复制 yank, y yy:复制整行 nyy/yny y^/y0:复制当前行到行头的内容 y$:复制当前到行尾的内容 yw:复制一个word nyw/ynw 复制n个word yG:复 ...