java poi-tl 使用 模板 生成文档

1.引入依赖

<!--导出doc模板工具--><dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.10.6</version></dependency>

2.编码

/*** 导出doc文件* @param id* @return*/@GetMapping("/exportDoc/{id}")public void exportDoc(@PathVariable String id,HttpServletResponse response) {Task taskById = taskService.getTaskById(id);Map<String,String> map=new HashMap<>();map.put("title",taskById.getTitle());map.put("year",String.valueOf(taskById.getYear()));map.put("taskCode",taskById.getTaskCode());map.put("workDemand",taskById.getWorkDemand());map.put("creatorName",taskById.getCreatorName());map.put("createdTime", DateUtil.format(taskById.getCreatedTime(), "yyyy-MM-dd HH:mm:ss"));map.put("responsibleDepartmentName",taskById.getResponsibleDepartmentName());map.put("responsiblePerson",taskById.getResponsiblePerson());map.put("supervisionPerson",taskById.getSupervisionPerson());map.put("limitDate",DateUtil.format(taskById.getLimitDate(), "yyyy-MM-dd HH:mm:ss"));map.put("startDate",DateUtil.format(taskById.getStartDate(), "yyyy-MM-dd HH:mm:ss"));map.put("endDate",DateUtil.format(taskById.getEndDate(), "yyyy-MM-dd HH:mm:ss"));ClassPathResource resource = new ClassPathResource("poiTemplate/taskDocTemplate.docx");XWPFTemplate template = XWPFTemplate.compile(resource.getStream()).render(map);/*try {template.write(new FileOutputStream("C:\\Users\\Administrator\\Desktop\\鸭河\\output.docx"));} catch (IOException e) {e.printStackTrace();}*/response.setContentType("application/octet-stream");response.setHeader("Content-disposition","attachment;filename=\""+"out_template.docx"+"\"");try {OutputStream out = response.getOutputStream();BufferedOutputStream bos = new BufferedOutputStream(out);template.write(bos);bos.flush();out.flush();PoitlIOUtils.closeQuietlyMulti(template, bos, out);} catch (IOException e) {e.printStackTrace();}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/736721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快乐生活,快乐分享,5款实用的小软件推荐

​ 分享是一种神奇的东西&#xff0c;它使快乐增大&#xff0c;它使悲伤减小&#xff0c;坚持分享一些好用的软件给大家&#xff0c;今天继续为大家带来五款好用的小软件。 1.数字笔记应用——OneNote ​ OneNote是微软推出的数字笔记应用&#xff0c;提供了一个集中的地方来…

c++ vector使用

动态数组&#xff0c;使用方法与python数组类似 1.定义和初始化 vector<type> name创建一个名为nama的type类型vectorvector<type> name{val1,val2,val3}创建数组并初始化为[val1,val2,val3]vector<type> name2(name1)使用name1的元素初始化name2&#xff…

泡菜生产加工厂污水处理需要哪些工艺设备

泡菜生产加工厂污水处理是一个重要的环境问题&#xff0c;需要采用一系列工艺设备来有效处理污水并降低对环境的影响。以下是一些常见的工艺设备&#xff0c;可以在泡菜生产加工厂中使用&#xff1a; 1. 沉淀池&#xff1a;沉淀池是最常用的工艺设备之一&#xff0c;其主要作用…

连表查询-mybatis

关于关联查询 首先&#xff0c;请准备一些测试数据&#xff0c;使得&#xff1a;存在若干条用户数据&#xff0c;存在若干条角色数据&#xff0c;某个用户存在与角色的关联&#xff0c;最好有些用户有多个关联&#xff0c;又有些用户只有1个关联&#xff0c;还有些用户没有关联…

XML常用介绍

XML代表可扩展标记语言&#xff08;eXtensible Markup Language&#xff09;&#xff0c;它是一种类似于HTML的标记语言。XML用于提供数据描述格式&#xff0c;适用于不同应用程序之间的数据交换&#xff0c;而这种交换不依赖于预定义的数据结构集合&#xff0c;从而增强了可扩…

产品说明文件的二维码怎么做?扫码看文件在线生成技巧

现在很多企业会把产品说明书的文件做成二维码后&#xff0c;印刷到产品包装或者宣传展板上&#xff0c;让其他人通过扫码来查看说明&#xff0c;有效的提高了用户体验。那么文件二维码制作的方法和步骤可能有很多小伙伴都不太清楚&#xff0c;那么今天小编通过本篇文章来给大家…

城市基础信息管理系统 (VB版电子地图源码/公交车线路图/超市平面图)-143-(代码+程序说明)

转载地址http://www.3q2008.com/soft/search.asp?keyword143 请访问 以下地址,查看最新版本, 新增加支持 建筑物 距离测量, 鸟瞰, 地图放大缩小, VB完善地图扩充程序(城市街道基础信息管理系统 )-362-&#xff08;代码&#xff0b;论文&#xff09; 这套系统印象深刻 因为,写…

[云原生] K8s之ingress

1.Ingress的相关知识 1.1 Ingress的简介 service的作用体现在两个方面&#xff0c;对集群内部&#xff0c;它不断跟踪pod的变化&#xff0c;更新endpoint中对应pod的对象&#xff0c;提供了ip不断变化的pod的服务发现机制&#xff1b;对集群外部&#xff0c;他类似负载均衡器…

VideoDubber时长可控的视频配音方法

本次分享由中国人民大学、微软亚洲研究院联合投稿于AAAI 2023的一篇专门为视频配音任务定制的机器翻译的工作《VideoDubber: Machine Translation with Speech-Aware Length Control for Video Dubbing》。这个工作将电影或电视节目中的原始语音翻译成目标语言。 论文地址&…

软件测试 基础(2)

文章目录 1. 软件测试&软件开发生命周期2. 如何描述一个 BUG3. 如何定义 BUG 的级别4. BUG 的生命周期5. 如何进行第一次测试6. 测试的执行和 BUG 管理7. 产生争执怎么办&#xff08;处理人际关系&#xff09; 1. 软件测试&软件开发生命周期 软件测试的生命周期&#…

Matplotlib图形配置--自定义坐标刻度

文章目录 自定义坐标刻度编程要求代码解释 自定义坐标刻度 虽然matplotlib默认的坐标轴定位器与格式生成器可以满足大部分需求&#xff0c;但是并非对每一幅图都合适。 主次要刻度 学习前最好先对matplotlib图形的对象层级有深入了解。 matplotlib的figure对象是一个盛放图形…

Oracle集群ASM磁盘扩容

先通过lsblk来查看集群两端磁盘是否扩容成功 lsblk -a查看自己两边磁盘UUID是否相同(for i in 后面为磁盘sd后字母名) for i in x y z aa ab ac ad ae do echo "KERNEL\"sd*\", SUBSYSTEM\"block\", PROGRAM\"/lib/udev/scsi_id --whitelist…

Vue 3中的ref:响应式变量的强大工具

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

jeecgboot 开放页面权限,免登录访问

前端需要配置路由和添加白名单 1、配置路由 2、 在permission.js里&#xff0c;把刚才的路由添加到白名单 3、 后端需要把该页面涉及到的接口排除权限拦截 比如我这个页面涉及到两个接口&#xff1a; 那么就在后端的excludeUrls把这两个接口加进去。 前端后端都设置好了&…

PostgreSQL教程(二十九):服务器管理(十一)之高可用、负载均衡和复制

数据库服务器可以一起工作&#xff0c;这样如果主要的服务器失效则允许一个第二服务器快速接手它的任务&#xff08;高可用性&#xff09;&#xff0c;或者可以允许多个计算机提供相同的数据&#xff08;负载均衡&#xff09;。理想情况下&#xff0c;数据库服务器能够无缝地一…

Linux系统运维脚本:检查登录用户是否过多 (比如超过20个),使用uptime,who,cron等命令查看登录用户的数量

目 录 一、问题 二、解决方法 1、通过统计登录用户来发现非法入侵者 2、脚本实现登录用户数超过阈值&#xff0c;给出提醒 3、定期运行脚本&#xff0c;让提醒及时有效 一、问题 Linux的服务器放在公网上&#xff0c;很多人需要访问这个服务器&#xff0c;知道…

AI皮肤测试的基本原理

人工智能测试皮肤的实现原理通常涉及计算机视觉和机器学习技术。以下是一般的实现步骤和原理&#xff0c;涉及数据收集、特征提取、模型训练和优化等多个步骤&#xff0c;利用这些步骤中的技术手段来实现对皮肤状况的识别和分类。北京木奇移动技术有限公司&#xff0c;专业的软…

在用Java写算法的时候如何加快读写速度

对于解决该方法我们一般如下操作&#xff0c;不需要知道为什么&#xff0c;有模板&#xff08;个人观点&#xff09; 使用BufferedReader代替Scanner&#xff1a;Scanner类在读取大量输入时性能较差&#xff0c;而BufferedReader具有更高的读取速度。可以使用BufferedReader的r…

车规芯片为什么需要信息安全(2)

目录 1.车规芯片的信息安全应该从什么地方考虑 1.1 芯片硬件安全防护能力 1.2 车规芯片的信息安全服务

Yolov8将.pt文件转换为tensorRt的.trt文件(模型部署)

我的环境 确保自己已经有cuda和cudnn的环境基础上进行。 cuda:11.7cudnn:适合cuda的版本Anaconda3 [python 3.10]TensorRt-8.6.1 安装TensorRt环境 查看自己的cuda环境&#xff0c;去官网下载适合的win版本。 官网地址 下载后解压&#xff0c;将解压后lib目录添加到环境变…