poi-tl实现word文档按模板下载
poi-tl是对poi很好的一个封装,用起来相对来说也更加简单,将git的地址记录一下,方便大家去看
扣扣技术分享交流群:1125844267
源码和文档
https://github.com/Sayi/poi-tl
我们的项目是前后端分离的,前端vue,后端springboot,springCloud
前端:
前端的话很简单, window.open("后端访问地址");请求到下载的后端方法
后端:
后端的话首先我们需要引入相应的依赖:
<!-- 导出poi -->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version>
</dependency><!-- poi-tl word模板引擎 -->
<dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.5.0</version>
</dependency>
因为之前项目中做过excel的导出,所以有poi的依赖,后导出word文档的时候又引入了poi-tl,所以没有测试单独引入poi-tl是否能够导出word文档成功
制作需要导出的word文档的模板:
其实是很简单的,只要将我们要查出来的数据对应的实体类的每个字段跟我们word模板的字段能够对应上就可以了,然后将这个模板放入到resource下
具体实现导出的代码:
@RequestMapping(value = "exportLog", method = RequestMethod.GET)
public ResponseEntity<byte[]> exportLog(@RequestParam Long id){//这儿其实就是将要导出的数据查出来DutyLog dutyLog = dutyLogService.getDutyLogById(id);if(dutyLog != null){try {//获得resource路径String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();//找到我们实现准备好的模板并且将我们自己的数据渲染进去XWPFTemplate template = XWPFTemplate.compile(path+"/template.docx").render(dutyLog);//文档说是用ServletOutputStream来导出,但是没有搞成功ByteArrayOutputStream baos = new ByteArrayOutputStream();template.write(baos);HttpHeaders headers = new HttpHeaders();headers.setContentDispositionFormData("attachment",new String((dutyLog.getName()+"_"+ dutyLog.getCreateTime() + ".docx").getBytes("UTF-8"), "iso-8859-1"));headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);ResponseEntity<byte[]> entity = new ResponseEntity<>(baos.toByteArray(), headers, HttpStatus.CREATED);return entity;} catch (IOException e) {logger.error("LogController=================================>exportLog:",e);}}return null;
}
之前的想法是将数据直接保存成模板文档,前端直接点击文档路径预览,但是没有实现成功,主要有这几点考虑:
1、如果将生成的文档保存到项目目录下,那么每次重新部署的话就得将之前生成的文档拷贝过来,这样做很不便捷;
2、如果将生成的文档放到项目外边,那么直接点击链接肯定无法实现点击预览,其实就算在项目目录下也不一定能成功。 word和图片还是有区别的,图片是可以根据链接直接显示的,个人觉得如果想实现word预览前端还是需要加插件的。之前也没做过,不敢肯定,有做过的朋友可以给点儿建议
3、主要还是数据库保存了一份,那么word文档再保存一份就显得多此一举,所以最后选择保留数据库
那么还是将按模板保存word文档的代码记录一下:
dutyLog是参数,是需要保存的数据
XWPFTemplate template = null;
FileOutputStream out = null;
try {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String now = format.format(new Date());dutyLog.setCreateTime(now);//获得resource路径String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();template = XWPFTemplate.compile(path+"/template.docx").render(dutyLog);File dir = new File("/dutyLog/"+dutyLog.getName());if(!dir.exists()){dir.mkdirs();}//保存文件out = new FileOutputStream(dir+"/"+ dutyLog.getName() + "-" + dutyLog.getId() +".docx");template.write(out);out.flush();return true;
} catch (Exception e) {e.printStackTrace();return false;
}finally {try {if(out != null){out.close();}if(template != null){template.close();}} catch (IOException e) {e.printStackTrace();}
}
return false;
个人建的交流群1125844267,欢迎大家加入!
如果内容对大家有所帮助,感谢鼓励!实现我小时候一人给我一块钱的美梦,哈哈!
poi-tl实现word文档按模板下载相关推荐
- Java poi实现合并word文档,兼容图片合并(java实现word导出)
需求,今天有个需求,实现word文档批量导出,并附带图片,这里的批量导出是指导出一份word文档存在多分相同类型的数据. 实现方式,定义一份word文档模板,使用占位符方式来替换文本内容. 问题,怎么 ...
- java后台利用模板生成Word文档提供前台下载
2016.12.06更新,java后台利用Apache poi生成Excel文档提供前台下载,博客链接http://blog.csdn.net/u010251278/article/details/5 ...
- Apache POI 密码保护只读word文档在WPS中无效
Apache POI 密码保护只读word文档在WPS中无效 最近项目有个要求就是从系统下载的WORD文档需要进行密码保护,防止篡改.于是很自然地想到了用POI去加入只读模式然后用密码保护: XWPF ...
- word文档封面免费下载_为Word 2007文档添加封面
word文档封面免费下载 I've been using Microsoft Word since 1985, starting with Word for Mac and eventually mo ...
- 使用PHPWord把html转成word文档并支持下载
在开发项目中,遇到的需求:把后台录入的数据保存成word文档,以便其他人员使用.于是在调研的时候,从git上找了PHPWord. PHPWord官方文档 PHPWord git地址 一.安装PHPWo ...
- Java使用POI实现导出Word文档
POI官网链接:http://deepoove.com/poi-tl/(方便各位博友后期深入学习) 1.首先导入POM依赖包 <dependency><groupId>com. ...
- C#、NPOI生成Word文档(模板)
项目需要集成word导出,做的时候网上文档资源不是很多,也比较杂乱,所以查了查,整理了整理,做个记录,也顺便把NPOI操作Word文档的一些基本操作分享给有需要的朋友. 本篇包括生成Word对word ...
- linux下poi把word转图片,我需要将Apache POI图片从Word文档转换为html文件
我有一些代码使用Java Apache POI库打开一个Microsoft Word文档,并使用Apache POI将其转换为html,它还会获取文档上图像的字节数组数据.但是我需要将此信息转换为ht ...
- PNG图片转换word文档,不用下载软件,免费完成
PNG格式也是我们工作中常见的图片格式,工作中难免会整理一些PNG图片资料,大家都是怎么做的呢?小编给大家分享一个方法,就是把PNG图片转换word文档,这样就方便我们去整理了,并且无需下载软件就可以 ...
最新文章
- HTTP 错误 500.21 - Internal Server Error 解决方案
- Android2.3.7源码结构分析
- 如何同步FTP服务器文件,ftp服务器文件同步
- html 价格列表组件,评价列表ratings组件
- 奇淫技巧之整形数组偏移量
- uint32是什么数据类型_C++编程基础: 4. 数据类型
- oracle 查看远程用户,oracle sysdba用户远程登录
- 怎么有效提高执行力?
- 微信开发:getLocation签名失效的问题
- c++string类寻找子串
- 20200815每日一句
- Eclipse优化设置技巧
- 8、信息隐藏技术:数字水印技术
- iphone 与 PC端电脑投屏设置
- SEM和SEO的区别
- 保存 web.xml 卡
- 第一个用python实现的数据化运营分析实例——销售预测
- AWS 云计算 SQS SNS
- html中背景条纹效果,CSS制作Web页面条纹背景样式的技巧分享
- 计算机多用户访问不同磁盘,win10系统实现多账户独享不同盘符的操作方法