springboot使用poi-tl动态填充word模板

第一、导入依赖
<!-- docx 数据填充生成 doc文件  这个是主要 -->
<!-- POI -->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.1.2</version>
</dependency><!-- poi-tl -->
<dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.10.0</version>
</dependency>

第二、配置maven打包,过滤掉word文件,不加以编码,否则会报错

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.1.0</version><configuration><encoding>UTF-8</encoding><nonFilteredFileExtensions><!-- Caused by: java.util.zip.ZipException: Unexpected record signature: 0X9应该是编译代码时,把excel模板文件也重新编码了,导致excem模板文件格式损坏需要过滤掉不需要编码的文件:过滤后缀为.xlsx或者.xls,docx后者doc的所有文件,不对其进行统一编码--><nonFilteredFileExtension>xlsx</nonFilteredFileExtension><nonFilteredFileExtension>xls</nonFilteredFileExtension><nonFilteredFileExtension>docx</nonFilteredFileExtension><nonFilteredFileExtension>doc</nonFilteredFileExtension><nonFilteredFileExtension>pptx</nonFilteredFileExtension><nonFilteredFileExtension>ppt</nonFilteredFileExtension></nonFilteredFileExtensions></configuration>
</plugin>

第三、编写测试代码

@GetMapping("/filld")
@ApiOperation("测试word代码填充")
public void zipDdownload2(HttpServletRequest request, HttpServletResponse response) throws IOException {Map<String, Object> params = new HashMap<>();params.put("legalCode","dddd");params.put("channel","数智xxx");Resource resource = new ClassPathResource("templates_report/2.docx");File file = resource.getFile();//创建输出流OutputStream os = new FileOutputStream("template1_out.docx");//最终编译渲染并输出XWPFTemplate.compile(file).render(params).writeAndClose(os);System.out.println("输出完毕");
}

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

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

相关文章

C++11特性:共享智能指针

在C中没有垃圾回收机制&#xff0c;必须自己释放分配的内存&#xff0c;否则就会造成内存泄露。解决这个问题最有效的方法是使用智能指针&#xff08;smart pointer&#xff09;。智能指针是存储指向动态分配&#xff08;堆&#xff09;对象指针的类&#xff0c;用于生存期的控…

docker hub 上传笔记

近段时间刚好有相关需求上传docker到hub&#xff0c;顺便记录学习一下&#xff1a; 1. 构建指定版本&#xff0c;并上传 docker build --platformlinux/amd64 -f dockerfile_s01 -t myDocker . # 打标签&#xff0c;docker images的名字为myLocalDockerName docker tag myLoc…

机器学习 深度学习 神经网络

神经网络概念&#xff1a; 神经网络是一个由生物神经元组成的网络或电路&#xff0c;或者从现代意义上讲&#xff0c;是一个由人工神经元或节点组成的人工神经网络。因此&#xff0c;一个神经网络要么是由生物神经元组成的生物神经网络&#xff0c;要么是用于解决人工智能&…

pytorch——基于循环神经网络的情感分类

任务目标 基于给定数据集&#xff0c;进行数据预处理&#xff0c;搭建以LSTM为基本单元的模型&#xff0c;以Adam优化器对模型进行训练&#xff0c;使用训练后的模型进行预测并计算预测分类的准确率。 数据集信息 IMDB数据集是一个对电影评论标注为正向评论与负向评论的数据…

35_36-Golang 中的 go mod 以及 Golang 包详解

**Golang **中的 **go mod **以及 **Golang **包详解 主讲教师&#xff1a;&#xff08;大地&#xff09; 合作网站&#xff1a;www.itying.com** **&#xff08;IT 营&#xff09; 我的专栏&#xff1a;https://www.itying.com/category-79-b0.html 一、Golang 中包的介绍和…

Ubuntu 常用命令之 chown 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 chown 命令在 Ubuntu 系统中用于改变文件或目录的所有者和组。这个命令的基本格式是 chown [选项]... [所有者][:[组]] 文件...。 chown 命令的主要参数有 -c 或 --changes&#xff1a;类似 verbose&#xff0c;但只在发生改变时…

【产品经理】Axure原型工具教程

笔记为项目总结笔记&#xff0c;若有错误欢迎指出哟~ Axure原型工具教程 Axure简介原型图分类常用操作常用原件常用交互母版常用设备分辨率 Axure简介 Axure是一款专业的原型设计与交互设计软件&#xff0c;可以帮助用户快速创建高保真的原型和交互设计。Axure支持多种常见的交…

java8实现List中对象属性的去重

java8的stream流能完美解对象集合去重问题. Data AllArgsConstructor NoArgsConstructor Builder public class UserCar {private Integer id;private String carNo;public static void main(String[] args) {List<UserCar> cars new ArrayList<>();cars.add(Use…

关于Selenium的网页对象单元测试的设计模式

写在前面&#xff1a;经过了实践总结一下经验&#xff0c;心得进行一个分享。 首先driver是可以单独抽出来的&#xff0c;变成一个driver函数放在driver.py。 from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver…

【案例】图片预览

效果图 如何让图片放大&#xff0c;大多数的UI组件都带有这种功能&#xff0c;今天给大家介绍的这个插件除了放大之外&#xff0c;还可以旋转、移动、翻转、旋转、二次放大&#xff08;全屏&#xff09; 实现 npm i v-viewer -Smain.js 中引入 import viewerjs/dist/viewer.c…

【网络基础】网线制作集线器和交换机讲解路由设置

目录 一 网线制作 ● 由来 ● 材料&#xff08;4种&#xff09; ● 步骤 二 集线器和交换机 2.1 OSI七层模型概念 2.2 集线器与交换机简介 三 路由器设置 3.1 路由器概念 3.2 路由器设置管理登入 3.2.1 进路由器管理(新路由器) 3.2.2 进路由器管理(旧路由器) 四 全…

ROS笔记之rosbag的快速切片(C++实现)

ROS笔记之rosbag的快速切片(C实现) —— 杭州 2023-12-21 夜 code review 文章目录 ROS笔记之rosbag的快速切片(C实现)1.运行效果2.文件结构3.fast_rosbag_slice.cpp4.CMakeLists.txt5.package.xml6.对fast_rosbag_slice.cpp进行函数封装 正常该功能是ROS官方命令行&#xff1a…

C#合并多个Word文档(微软官方免费openxml接口)

g /// <summary>/// 合并多个word文档&#xff08;合并到第一文件&#xff09;/// </summary>/// <param name"as_word_paths">word文档完整路径</param>/// <param name"breakNewPage">true(默认值)&#xff0c;合并下一个…

华为路由配置值——通过流策略实现策略路由(重定向到不同的下一跳)

组网图形 图1 配置策略路由组网图 策略路由简介配置注意事项组网需求配置思路操作步骤配置文件 策略路由简介 传统的路由转发原理是首先根据报文的目的地址查找路由表&#xff0c;然后进行报文转发。但是目前越来越多的用户希望能够在传统路由转发的基础上根据自己定义的策略…

React-Native环境搭建(IOS)

系列文章目录 React-Native环境搭建&#xff08;IOS&#xff09; 目录 系列文章目录前言一、IOS环境搭建前置说明二、环境搭建步骤1.Homebrew安装2.安装Xcode3.Node4.watchman5.CocoaPods 三、项目启动1.初始化项目2.项目启动 总结 前言 React-Native开发环境的搭建&#xff…

c# 使用OpenCV

C#和OpenCV的结合主要通过一个名为OpenCVSharp的库实现。OpenCVSharp是一个C#包装器&#xff0c;它提供了对OpenCV&#xff08;一个开源的计算机视觉和机器学习库&#xff09;功能的访问。 安装OpenCVSharp NuGet包&#xff1a; 在Visual Studio中&#xff0c;右键点击你的项目…

在 Mac 上使用 Python

在运行 macOS 的 Mac 上的 Python 原则上与在其他 Unix 平台上的 Python 非常相似&#xff0c;但有一些额外的特性&#xff0c;如 IDE 和包管理器&#xff0c;值得指出。 5.1. 获取和安装 MacPython macOS 曾经在 10.8 至 12.3 版中预装了 Python 2.7。 建议你从 Python 网站…

【已解决】vs2015下c++对sqlite的操作

本博文源于笔者操作sqlite3&#xff0c;借鉴了很多文章的思路&#xff0c;这里并整理了c常用的对数据库的操作供大家点赞收藏以后备用。包含了&#xff1a;c对sqlite3的创建数据库、创建数据表、写入数据表、读取数据表、删除数据表。也包括了最基础的让c运行sqlite3.内容供读者…

手机无人直播的兴起

近年来&#xff0c;随着科技的不断进步和智能手机的普及&#xff0c;手机无人直播成为了一种新兴的传媒方式。手持手机&#xff0c;不经过镜头操作人员的干预&#xff0c;通过直播平台实时分享自己的所见所闻&#xff0c;成为了越来越多人的选择。手机无人直播的盛行离不开以下…

[node]Node.js 中REPL简单介绍

[node]Node.js 中REPL简单介绍 什么是REPL为什么使用REPL如何使用REPL 命令REPL模式node的全局内容展示node全局所有模块查看全局模块具体内容其它命令 实践 什么是REPL Node.js REPL(Read Eval Print Loop:交互式解释器) 表示电脑的环境&#xff0c;类似 Windows 系统的终端或…