java使用poi-tl自定义word模板导出

server/2025/1/17 7:04:07/

文章目录

  • 概要
  • 整体架构流程
  • 创建word模板
  • 核心代码
  • 导出结果

概要

在软件开发领域,自定义Word模板的使用是导出格式化数据的一种常见做法。poi-tl(Apache POI Template Language)作为一款基于广受认可的Apache POI库的Word模板引擎,它以纯Java组件的形式提供服务,确保了跨平台的兼容性。poi-tl以其简洁高效的代码著称,不仅易于集成,还通过其插件机制实现了功能的高度可扩展性,允许开发者根据项目需求灵活定制。这一特性使得poi-tl成为处理Word文档生成任务时的一个强有力工具。

整体架构流程

官网:poi-tl

java"> <!--    POI 依赖 使用xlsx xml的格式(即XSSFWorkbook)   --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.17</version></dependency><!--     poi模板导入,主力包      --><dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version></dependency>

创建word模板

核心代码

java">       try {String pictureUrl = "D:\\file\\test\\image\\bigPicture10.jpeg";if (pictureUrl != null && !pictureUrl.isEmpty()) {PictureRenderData picture = Pictures.ofLocal(pictureUrl).size(40, 30).create();finalMap.put("signPicture", picture);}} catch (Exception e) {e.printStackTrace();}// 从classpath加载Word模板文件到临时文件try (InputStream inputStream = TestWord.class.getClassLoader().getResourceAsStream("template.docx")) {if (inputStream == null) {throw new RuntimeException("无法找到模板文件:template.docx");}// 创建一个临时文件用于XWPFTemplate处理Path tempFilePath = Files.createTempFile("word-template-", ".docx");Files.copy(inputStream, tempFilePath, StandardCopyOption.REPLACE_EXISTING);// 使用临时文件作为模板File wordTemplate = tempFilePath.toFile();LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();Configure build = Configure.builder().bind(policy, "workList").build();XWPFTemplate render = XWPFTemplate.compile(wordTemplate, build).render(finalMap);// 定义输出路径String outputPath = "D:\\file\\htht\\project\\260\\开发\\output.docx"; // 修改为期望的输出文件路径File outputFile = new File(outputPath);try {if (!outputFile.getParentFile().exists()) {outputFile.getParentFile().mkdirs(); // 确保父目录存在}render.writeToFile(outputFile.getAbsolutePath());System.out.println("Word文档成功导出到: " + outputPath);} catch (IOException e) {throw new RuntimeException("无法写入文件: " + e.getMessage(), e);}// 删除临时文件(可选)Files.deleteIfExists(tempFilePath);} catch (IOException e) {throw new RuntimeException("读取模板文件失败: " + e.getMessage(), e);}

 导出结果

资源提取:https://download.csdn.net/download/yy12345_6_/90275767


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

相关文章

基于智能物联网的肉鸡舍控制器:设计、实施、性能评估与优化

英文标题&#xff1a; Smart IoT-Based Broiler Room Controller: Design, Implementation, Performance Evaluation, and Optimization 作者信息 Shamsu Sabo Department of Computer Science, National Open University of Nigeria, Fagge Study Center, Nigeria Email: 144…

Unity中实现倒计时结束后干一些事情

问题描述&#xff1a;如果我们想实现在一个倒计时结束后可以执行某个方法&#xff0c;比如挑战成功或者挑战失败&#xff0c;或者其他什么的比如生成boss之类的功能&#xff0c;而且你又不想每次都把代码复制一遍&#xff0c;那么就可以用下面这种方法。 结构 实现步骤 创建一…

微信小程序实现个人中心页面

文章目录 1. 官方文档教程2. 编写静态页面3. 关于作者其它项目视频教程介绍 1. 官方文档教程 https://developers.weixin.qq.com/miniprogram/dev/framework/ 2. 编写静态页面 mine.wxml布局文件 <!--index.wxml--> <navigation-bar title"个人中心" ba…

Linux 音视频入门到实战专栏(音频篇)基于alsa api的音频播放/录制流程

文章目录 一、简介1.1、音频播放流程1.2、音频录制流程 二、播放音频示例三、录制音频示例 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; &#x1f4e2;本篇将介绍如何调用alsa api来进行音频数据的播放和录制。 一、简介 1.1、音频播放流…

学习微信小程序的下拉列表控件-picker

1、创建一个空白工程 2、index.wxml中写上picker布局&#xff1a; <!--index.wxml--> <view class"container"><picker mode"selector" range"{{array}}" bindchange"bindPickerChange"><view class"pick…

10k 、100k NTC热敏电阻阻值表与温度关系

常用的热敏电阻有10k,100k阻值。 所谓的10k&#xff0c;100k是指该热敏电阻在摄氏25度的时候所对应的阻值。 还有一个重要的参数就是热敏电阻的B值&#xff0c;这个B值网上有很多资料和解读&#xff0c;其实可以把它理解成是该热敏电阻阻值随温度的变化率&#xff0c;他对温度…

【Linux】常见指令(一)

Linux常见指令 01.whoami02.pwd03.ls04.mkdir05.cd 本文LInux环境为&#xff0c;使用XShell远程登陆到Linux。 具体如何环境搭建&#xff0c;大家可以查看其他博客。 01.whoami whoami 指令用来查看当前账户是谁。 如上图所示&#xff0c;使用whoami指令&#xff0c;查看到现在…

MATLAB语言的面向对象编程

MATLAB语言的面向对象编程 引言 MATLAB&#xff0c;作为一种高效且功能强大的数值计算环境&#xff0c;以其丰富的数学工具箱和强大的绘图功能被广泛应用于工程、科学研究及教育领域。近年来&#xff0c;随着软件开发需求的不断增加&#xff0c;MATLAB也引入了面向对象编程&a…