java写入word表格(poi-tl)

server/2024/10/18 3:37:14/

1.导入依赖

<!--poi-tl-->
<dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.0</version>
</dependency>

2.代码

自己创建模板。放在(resource/file)

    @GetMapping("/api/word")@ApiOperation(value = "接口文档下载", produces = "application/octet-stream")@ApiOperationSupport(order = 1)public void download(@RequestParam @NotBlank(message = "id不能为空") String id, HttpServletResponse response) throws Exception {try (InputStream resourceAsStream = getClass().getResourceAsStream("/file/word.docx");XWPFTemplate template = XWPFTemplate.compile(resourceAsStream);OutputStream out = response.getOutputStream();BufferedOutputStream bos = new BufferedOutputStream(out)) {//封装模型数据HashMap<String, Object> map = new HashMap<>();map.put("apiLabel", "apiLabel");map.put("apiPath", Texts.of("apiPath").color("0000FF").bold().create());map.put("returnFormat", "JSON");//apiParams  getApiParams方法获取一个List类型map.put("apiParams", Tables.create(getApiParams(data.getApiParams()).toArray(new RowRenderData[0])));//渲染数据template.render(map);//以文件形式输出//      template.writeAndClose(new FileOutputStream(outputPath));//文件流response.setContentType("application/octet-stream");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode防止中文乱码String fileName = URLEncoder.encode("测试"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd-HH-mm-ss"))+"_授权文档", "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".docx");template.write(bos);}}

3.效果

参考:

poi-tl的使用(通俗易懂,全面,内含动态表格实现 !)-CSDN博客

https://deepoove.com/poi-tl/


http://www.ppmy.cn/server/110711.html

相关文章

【活动预约】镭速邀您莅临2024年行业案例分享专场线下沙龙活动!

​为了加强行业内外渠道集成商及相关生态合作伙伴的交流合作&#xff0c;共同应对数据安全挑战&#xff0c;提升内外网安全交换系统的应用范围及应用效果&#xff0c;镭速即将举办一场不容错过的2024年行业案例分享专场线下沙龙活动&#xff01; 活动亮点 ➣行业前沿&#x…

打卡57天------图论(两种算法)

最近的算法题都太高深莫测了&#xff0c;对于一个前端工程师来说&#xff0c;要求没有那么严吧。 今天在学习prim 和 kruskal的同时&#xff0c;也要清楚这两个算法的区别所在。 一、prim算法精讲 代码随想录 无JS官方题解代码。 二、kruskal算法精讲 代码随想录 无JS官方题解…

钢铁百科:A633D交货状态、A633D对应牌号、A633D力学性能解析

A633D钢板是一种美标低合金高强度结构钢板&#xff0c;也被称为A633GrD钢板&#xff0c;其执行标准为ASTM/A633M。这种钢板以其高屈服强度、良好的韧性、抗腐蚀性和耐疲劳性而著称&#xff0c;广泛应用于建筑、桥梁、船舶、汽车、铁路、重型机械及矿山机械等多个领域。 一、A6…

腾讯云技术深度解析:AI代码助手与微服务架构的实践应用

腾讯云技术深度解析:AI代码助手与微服务架构的实践应用 在数字化转型的浪潮中,云计算作为关键基础设施,正深刻改变着企业的IT架构和业务模式。腾讯云,作为国内领先的云服务提供商,不仅在基础设施层面提供了强大的支持,还在AI、大数据、微服务等领域不断创新,为开发者提…

设计模式--适配器模式

适配器模式 适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许一个接口&#xff08;通常是新的或现有的&#xff09;与另一个不兼容的接口一起工作。适配器模式主要用于解决接口不匹配的问题&#xff0c;让原本由于接口不兼容而不能一…

计算机网络第一章【新】

计算机网络概述 互联网(因特网)与互连网 互联网(Internet)&#xff1a;由数量极大的计算机网络互连起来的&#xff0c;是全球最大的计算机网络互连网(internet)&#xff1a;在局部范围互连起来的计算机网络应当注意的是&#xff0c;区分“Internet”和“internet”(大小写) 互…

BaseCTF之web(week2)

目录 ez_ser 一起吃豆豆 你听不到我的声音 Really EZ POP RCEisamazingwithspace 所以你说你懂 MD5? 数学大师 ez_ser <?php highlight_file(__FILE__); error_reporting(0);class re{public $chu0;public function __toString(){if(!isset($this->chu0)){return…

Node.js中离线集成ip2region:实现高效的IP地址定位

ip2region是一个离线IP地址定位库&#xff0c;支持多种编程语言&#xff0c;包括Node.js。其准确率高达99.9%&#xff0c;查询效率也非常高&#xff0c;非常适合在需要IP地址定位的场景中使用。下面是在Node.js项目中如何使用ip2region的详细步骤。 第一步&#xff1a;下载ip2…