JAVA中EasyPoi导出word文档附带表格数据

导入easy-poi相关依赖

  <!-- word导出  方式:easypoi --><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.4.0</version></dependency><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-web</artifactId><version>4.4.0</version></dependency><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId><version>4.4.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.1</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.1</version></dependency>

文档模版

QQ截图20240612194524.png

控制层业务层相关代码

   /*** 导出*/@GetMapping("/exportVehiclePurchaseOrder")public void exportVehiclePurchaseOrder(HttpServletResponse response) {// 创建Word文档并填充数据vehiclePurchaseOrderService.exportVehiclePurchaseOrder(response);}
try {// 相关数据信息由于业务原因就不展示了,相关数据在使用时候可以自己创建Map<String, Object> datas = new HashMap<String, Object>();Date createdTime = vehiclePurchaseOrder.getCreatedTime();datas.put("title", "车辆采购订单");datas.put("time", DateUtil.format(createdTime, "yyyy-MM-dd HH:mm:ss"));datas.put("procurementNo", vehiclePurchaseOrder.getPurchaseNo());datas.put("companyName", company.getName());String brand = DictDataUtils.getDictNameByCode("company_brand", company.getBrand());datas.put("brand", brand);datas.put("num", list.size());// 列表数据if (CollUtil.isNotEmpty(list)) {List<Map<String, Object>> data = new ArrayList<>();int num = 1;for (Vehicle vehicle : list) {Map<String, Object> row = new HashMap<>();row.put("no", String.valueOf(num));String vehicleBrand = DictDataUtils.getDictNameByCode("vehicle_brand", vehicle.getBrand());String vehicleModel = DictDataUtils.getDictNameByCode("vehicle_model", vehicle.getModelNo());row.put("vehicleBrand", vehicleBrand);row.put("vehicleModel", vehicleModel);row.put("licensePlateNo", vehicle.getLicensePlateNo());num++;data.add(row);}datas.put("list", data);}// 模版存放路径--服务器String path = "/evmmp_manage_data/template.docx";// String path = URLDecoder.decode(this.getClass().getClassLoader().getResource("templates/template.docx").getPath(), "UTF-8");FileUtils.exportWordByModel(response, datas, path, vehiclePurchaseOrder.getPurchaseNo() + "_" + System.currentTimeMillis());} catch (Exception e) {throw new ServiceException("导出采购订单失败");}
public class FileUtils {/*** 根据模板导出Word** @param response* @param map* @param modelFileName* @param outFileName*/public static void exportWordByModel(HttpServletResponse response, Map<String, Object> map, String modelFileName, String outFileName) {try {// 映射模板,替换数据XWPFDocument word = WordExportUtil.exportWord07(modelFileName, map);response.reset();response.setContentType("application/octet-stream");response.setHeader("Content-Disposition", "attachment;filename=" + outFileName + ".docx");// 将Word文档发送到浏览器word.write(response.getOutputStream());word.close();} catch (Exception e) {e.printStackTrace();}}

测试:
QQ截图20240612195135.png

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

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

相关文章

VBA学习(12):制作动态模糊匹配的下拉菜单

今天就再给大家分享一下&#xff0c;如何使用VBA制作更好用的动态模糊匹配下拉菜单。 完成后的效果演示如下&#xff1a; 如上图所示&#xff0c;点击A列单元格&#xff0c;Excel会自动跳出一个文本输入框和一个列表框。当在文本框中输入数据时&#xff0c;列表框的数据会随之…

IIS代理配置-反向代理

前后端分离项目&#xff0c;前端在开发中使用proxy代理解决跨域问题&#xff0c;打包之后无效。 未配置前无法访问 部署环境为windows IIS&#xff0c;要在iis设置反向代理 安装代理模块 需要在iis中实现代理&#xff0c;需要安装Application Request Routing Cache和URL重…

思维导图之计算机网络整体框架

高清自行访问&#xff1a;计算机网络整体框架 (yuque.com)

南开大学漏洞报送证书

获取来源&#xff1a;edusrc&#xff08;教育漏洞报告平台&#xff09; url&#xff1a;教育漏洞报告平台(EDUSRC) 兑换价格&#xff1a;30金币​ 获取条件&#xff1a;南开大学任意中危或以上级别漏洞 证书规格&#xff1a;证书做了木框装裱&#xff0c;显得很高级

Swagger2的巨坑无比

如果你遇到了一个Swagger问题&#xff0c;有的请求存在就会导致你Swagger接口扫描失败&#xff0c;并后台报NPE&#xff0c;在其它解决方案无法解决的时候&#xff0c;我建议看如下操作! 在请求参数的位置根据实际情况指定参数获取来源&#xff0c;是请求头还是请求体[RequestP…

技术先进、应用广泛、社区活跃的[项目名称]

项目介绍 ----  [项目介绍内容]&#xff0c;此项目在开源社区中备受欢迎&#xff0c;其创新性技术和广泛应用领域吸引了大量开发者关注。  代码解释 ----  [代码解释内容]&#xff0c;该项目采用[编程语言]&#xff0c;通过[技术栈]实现&#xff0c;具有[功能特点]。  …

k8s自动补全工具和UI管理界面

分享两个有利于K8S的工具 目录 分享两个有利于K8S的工具 一、部署Dashboard&#xff08;主节点&#xff09; 介绍 1.1、查看集群状态 1.2、下载yaml文件并运行Dashboard 1.3、部署服务 1.4、创建访问账户、获取token&#xff08;令牌&#xff09; 1.5、浏览器访问Dash…

css记录:三维变换之transition

在CSS中&#xff0c;transition属性用于在元素从一个样式状态过渡到另一个样式状态时添加动画效果。当用于三维变化&#xff08;即与transform属性结合使用时&#xff09;&#xff0c;transition可以创建平滑且吸引人的3D动画。 transition属性的基本语法 transition属性是一…

EasyCVR/EasyDSS无人机直播技术助力野生动物监测

近日有新闻报道&#xff0c;一名挖掘机师傅在清理河道时&#xff0c;意外挖出一只稀有的扬子鳄&#xff0c;挖机师傅小心翼翼地将其放在一边&#xff0c;扬子鳄也顺势游回一旁的河道中。 随着人类对自然环境的不断探索和开发&#xff0c;野生动物及其栖息地的保护显得愈发重要。…

天池人脸识别项目复现

1 项目背景 #c 概述 项目的目的 图像分类是整个计算机视觉领域中最基础的任务&#xff0c;也是最重要的任务之⼀&#xff0c;最适合拿来进⾏学习实践。为了让新⼿们能够⼀次性体验⼀个⼯业级别的图像分类任务的完整流程&#xff0c;本次我们选择带领⼤家完成⼀个对图片中⼈脸进…

功能强大的开源数据中台系统 DataCap 2024.03.6 发布

推荐一套基于 SpringBoot 开发的简单、易用的开源权限管理平台&#xff0c;建议下载使用: https://github.com/devlive-community/authx 推荐一套为 Java 开发人员提供方便易用的 SDK 来与目前提供服务的的 Open AI 进行交互组件&#xff1a;https://github.com/devlive-commun…

学科竞赛的一些想法

title: 学科竞赛的一些想法 typora-root-url: 学科竞赛的一些想法 date: 2023-05-11 16:02:28 tags: 竞赛 没参加 华为的&#xff0c;错过了中兴的。看了眼赛氪的。瞅了下分享贴的 企业举办的比赛&#xff0c;大学生要不要参加&#xff1f;&#xff08;什么样的比赛值得参加&…

服务器雪崩的应对策略之----异步处理

异步处理&#xff08;Asynchronous Processing&#xff09;是提高系统并发性和性能的重要技术。在异步处理模式下&#xff0c;任务可以在等待其他操作&#xff08;如I/O操作、网络请求等&#xff09;完成时继续执行其他任务&#xff0c;从而避免阻塞&#xff0c;提高资源利用率…

【Tableau系列第(6)篇】使用Tableau Prep进行数据清理、整合(一)

使用Tableau Prep的整体过程详见&#xff1a;【Tableau系列第&#xff08;5&#xff09;篇】用Tableau Prep整理数据全流程初体验 本篇一步一步跟我一起来熟悉更多的Tableau Prep数据清理、整合的操作。 示例excel数据源链接: https://pan.baidu.com/s/17nx3_LPe30oK1l1JsC6K…

04. Java 多线程的创建

1. 前言 本节内容重点需要掌握 Java 多线程的三种创建方式&#xff0c;具体内容如下&#xff1a; Java 线程类 Thread 继承结构&#xff0c;这是 JDK Thread 源码的类结构&#xff0c;是了解 Thread 类的第一步&#xff1b;掌握多线程的三种创建方式&#xff0c;这是本节的重…

记录:[android] SSLHandshakeException: Handshake failed 问题;已解决!

1、问题描述&#xff1a;在使用Retrofit2 时在安卓老设备上&#xff08;安卓6.0&#xff09;网络无法请求、安卓 10 、 11 未出现此问题&#xff1f;what? 原因&#xff1a;服务端 TLS 版本过高 2、废话不多说、解决方案A 、添加依赖&#xff1a;implementation org.conscrypt…

国产MCU芯片(3):小华半导体

前言: 微控制芯片(MCU)作为现代电子化、信息化智能控制的核心元器件之一,是将中央处理器、存储器、定时器/计时器、模拟信号采集模块以及通信接口等集成在一块芯片上的微型控制器。 家电与消费市场端仍是国内的MCU厂家下游最大的应用市场和主战场,最近两年正在发力车规级市…

ATA-4052C高压功率放大器在新能源汽车安全测试中的应用

新能源汽车的崛起已经改变了汽车行业的格局&#xff0c;为环境友好型交通方式提供了更多的选择。为了确保这些新型汽车的安全性和可靠性&#xff0c;进行全面的安全测试是至关重要的。高压功率放大器在新能源汽车的安全测试中发挥着重要的作用&#xff0c;本文将介绍其应用以及…

Spring Cloud Bus——概述与基本配置

在微服务架构中&#xff0c;多个服务之间的配置管理和事件通知是一个重要的需求。Spring Cloud Bus 提供了一个轻量级的消息总线&#xff0c;用于在分布式系统中传播配置变化和事件通知。它能够与 Spring Cloud Config 一起工作&#xff0c;实现配置的实时刷新。在这篇文章中&a…

饮酒四大规则

在享受饮酒的乐趣时&#xff0c;必须遵守一些基本原则&#xff0c;以确保健康不受影响。以下是四个关键的饮酒原则&#xff1a; 避免同时饮用酒和咖啡。尽管这两种饮料都有提神、兴奋和健胃的作用&#xff0c;但它们的混合物可能对身体产生负面影响。酒精和咖啡因的结合会加剧对…