Java easypoi导出word表格显示

1.成品

2.依赖

        <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><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>

3.代码

@Overridepublic void importBInfo(HttpServletResponse response,Integer id) {TestRecordFault testRecordFault = testRecordFaultMapper.selectById(id);List<VehicleParts> vehiclePartsList = vehiclePartsMapper.selectList(new LambdaQueryWrapper<VehicleParts>().eq(VehicleParts::getModelId,testRecordFault.getModelId()));Map<Integer, VehicleParts> vehiclePartsMap = vehiclePartsList.stream().collect(Collectors.toMap(VehicleParts::getId, vehicleParts -> vehicleParts));JSONObject vehicle = new JSONObject();Unit unit = null;if (StringUtils.isNotBlank(testRecordFault.getVehicleInfo())) {vehicle = JSONObject.parseObject(testRecordFault.getVehicleInfo());Integer unitId = vehicle.getInteger("unitId");if (unitId != null) {unit = unitMapper.selectById(unitId);}}// 1 设置编码格式、文件名称response.setCharacterEncoding("utf-8");String contentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";String fileName = testRecordFault.getFileName() + ".docx";response.setContentType(contentType);try {fileName = URLEncoder.encode(fileName, "UTF-8");} catch (IOException e) {e.printStackTrace();}response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName);Map<String, Object> map = new HashMap<>();// 1.基本属性填充map.put("fName", "F" + testRecordFault.getModelId());map.put("fileName", Optional.ofNullable(testRecordFault.getFileName()).orElse("--"));map.put("modelName", Optional.ofNullable(testRecordFault.getModelName()).orElse("--")); //Optional.ofNullable().orElse("--")map.put("powerHours", Optional.ofNullable(vehicle.get("powerHours")).orElse("--"));map.put("plateNumber", Optional.ofNullable(vehicle.get("plateNumber")).orElse("--"));map.put("powerPackWorking", Optional.ofNullable(vehicle.get("powerPackWorking")).orElse("--"));map.put("unitName", Optional.ofNullable(unit.getUnitName()).orElse("--"));map.put("powerPackYieldHours", Optional.ofNullable(vehicle.get("powerPackYieldHours")).orElse("--"));map.put("factoryDate", Optional.ofNullable(vehicle.get("factoryDate")).orElse("--"));map.put("taskPayloadWorkingHours", Optional.ofNullable(vehicle.get("taskPayloadWorkingHours")).orElse("--"));map.put("mileage", Optional.ofNullable(testRecordFault.getMileage()).orElse(0.0) );map.put("createTime", Optional.ofNullable(testRecordFault.getCreateTime()).orElse("--"));map.put("remark",Optional.ofNullable(testRecordFault.getRemark()).orElse("--"));//list所属系统//拼接数据结构// 2.商品详情列表填充List<Map<String, Object>> goodsWordList = new ArrayList<>();//解析下行数据List<DetailToB> list = JSON.parseArray(testRecordFault.getDetail(), DetailToB.class);for (int i = 0; i < list.size(); i++) {Map<String, Object> goodsMap = new HashMap<>();goodsMap.put("id", i+1); //Optional.ofNullable().orElse("--")goodsMap.put("testingProcess", Optional.ofNullable(list.get(i).getFileName()).orElse("--")); //检测流程名称goodsMap.put("item", Optional.ofNullable(list.get(i).getTestProject()).orElse("--")); //检测项目goodsMap.put("result", Optional.ofNullable(list.get(i).getTestResult()).orElse("--")); //检测结果goodsMap.put("partsName",Optional.ofNullable(list.get(i).getLittleUnit()).orElse("--")); //对应最小可更换单元goodsMap.put("subsystemName",Optional.ofNullable(list.get(i).getGenusSystem()).orElse("--")); //所属分系统goodsWordList.add(goodsMap);}map.put("goods", goodsWordList);//导出wordString location = "/template/testB.docx";try {XWPFDocument document = new MyXWPFDocument(Objects.requireNonNull(this.getClass().getResourceAsStream(location)));// 读取模板WordExportUtil.exportWord07(document, map);document.write(response.getOutputStream());} catch (Exception e) {e.printStackTrace();}}

4.模板

5.testB内容

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

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

相关文章

LabVIEW制系统开发流程介绍

在开发一个LabVIEW电机控制系统时&#xff0c;尤其是涉及多种类型的电机并需实现本地与远程控制时&#xff0c;合理的开发顺序是确保项目高效完成且返工最少的关键。下面介绍如何按照系统需求分阶段开发&#xff0c;从而保障开发的速度与质量&#xff0c;减少返工的风险。 开发…

RAG+Agent在实际业务落地案例分享+项目推荐

RAG+Agent在实际业务落地案例分享+项目推荐 大模型架构的经典分层,即:应用层、工具层、模型层 & AI Infra: 应用层 - 大模型应用:主要以 RAG&AI Agent 初代的模式透出,主要的落地场景包括内部数据分析 - GBI 即生成式 BI、研发辅助提效 - 生成式 Code、面向外部用…

《垃圾回收的算法与实现》-算法-摘抄

本文是书籍《垃圾回收的算法与实现》的摘抄&#xff0c;不涉及算法源码及步骤讲解模块。 预备 对象由头(header)和域(field)构成。 头&#xff1a;对象中保存对象本身信息的部分&#xff0c;主要含有以下信息&#xff1a;对象的大小和种类。 域&#xff1a;对象使用者在对象…

Veeam中国区“十年换四帅”

数据保护厂商Veeam登顶了&#xff01; 傲视群雄 8月&#xff0c;Gartner《2023年全球企业备份和恢复软件市场份额分析报告》显示&#xff0c;Veeam市场占有率居所有厂商中的第一位——其市场份额为15.1%&#xff0c;收入为15亿美元&#xff0c;2023年相比2022年增长11.8%。 数据…

深度学习(七)-计算机视觉基础

计算机视觉 计算机视觉在广义上是和图像相关的技术总称。包括图像的采集获取&#xff0c;图 像的压缩编码&#xff0c;图像的存储和传输&#xff0c;图像的合成&#xff0c;三维图像重建&#xff0c;图像增强&#xff0c;图像修复&#xff0c;图像的分类和识别&#xff0c;目…

Adobe Illustrator非矢量图片的交集利用剪切蒙版实现

AI不支持对于非矢量图片的交集处理&#xff0c;但是可以通过剪切蒙版类似地实现需求。 如下图&#xff0c;字母F是一张PNG图片&#xff0c;为位图文件&#xff08;非矢量&#xff09;。 现在我需要将这种图片与黑色的矩形求交&#xff1a; 将两个目标全部选中&#xff0c;鼠标…

安宝特案例 | AR如何大幅提升IC封装厂检测效率?

前言&#xff1a;如何提升IC封装厂检测效率&#xff1f; 在现代电子产品的制造过程中&#xff0c;IC封装作为核心环节&#xff0c;涉及到复杂处理流程和严格质量检测。这是一家专注于IC封装的厂商&#xff0c;负责将来自IC制造商的晶圆进行保护、散热和导通处理。整个制程繁琐…

Mysql Innodb存储引擎原理—链接如下

Mysql Innodb存储引擎| ProcessOn免费在线作图,在线流程图,在线思维导图 ProcessOn是一个在线协作绘图平台&#xff0c;为用户提供强大、易用的作图工具&#xff01;支持在线创作流程图、思维导图、组织结构图、网络拓扑图、BPMN、UML图、UI界面原型设计、iOS界面原型设计等。同…

探索有向图与无向图中深度优先搜索(DFS)的边类型——3×3 网格分析

探索有向图与无向图中深度优先搜索(DFS)的边类型——33 网格分析 一、基本概念二、有向图中的 DFS 边类型分析三、有向图 DFS 的 C 代码实现在图的深度优先搜索(DFS)过程中,边的分类对于理解算法的执行流程及其复杂性至关重要。在有向图和无向图中,DFS 过程中遇到的边可以…

基于单片机的水产养殖饲料自动投喂系统

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图系统框架图设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机…

【鸿蒙 HarmonyOS NEXT】使用屏幕属性display:获取屏幕宽高

✨本人自己开发的开源项目&#xff1a;土拨鼠充电系统 ✨踩坑不易&#xff0c;还希望各位大佬支持一下&#xff0c;在GitHub给我点个 Start ⭐⭐&#x1f44d;&#x1f44d; ✍GitHub开源项目地址&#x1f449;&#xff1a;https://github.com/cheinlu/groundhog-charging-syst…

Java笔试面试题AI答之单元测试JUnit(3)

文章目录 13. 什么是注释以及它们如何在JUnit中有用&#xff1f;什么是注释&#xff08;Annotation&#xff09;&#xff1f;注释在JUnit中的用途 14. 解释如何测试”受保护”方法&#xff1f;1. 使用子类2. 同一包内直接测试3. 反射&#xff08;在支持的语言中&#xff09;4. …

正点原子阿尔法ARM开发板-IMX6ULL(三)——汇编LED驱动实验-上

文章目录 一、原理分析1.1 对于IMX6ULL的IO初始化1.2 IO的复用&#xff08;MUX&#xff09;1.3 电气属性寄存器&#xff08;PAD&#xff09;1.3.1 SRE(bit0)1.3.2 DSE(bit5:3)1.3.3 SPEED(bit7:6)1.3.4 ODE(bit11)1.3.5 PKE(bit12)1.3.6 PUE(bit13)1.3.7 PUS(bit15:14)1.3.8 HY…

(java+Seleniums3)自动化测试实战

一.web自动化测试基础 密码的加密处理--是在前端JavaScript 二.selenium IDE录制 打开火狐浏览器&#xff1a; 点击 寻找更多附加组件 输入&#xff1a; 选择&#xff1a; 跳转&#xff1a;点击 安装完成&#xff0c;打开之后是这个页面&#xff1a; 录制一个新的测试用例在一个…

PHPJWT的使用

今天得空整理整理JWT的代码 首先&#xff0c;我们得知道什么是JWT&#xff1f; JWT&#xff08;JSON Web Token&#xff09;是一种开放标准&#xff08;RFC7519&#xff09;&#xff0c;用于在网络应用环境中安全地传输声明信息。它是一种紧凑的、URL安全的令牌格式&#xff0…

U盘变成RAW格式怎么办?如何恢复!

U盘类型显示为RAW&#xff0c;导致无法正常读取或写入数据&#xff0c;怎么办&#xff1f;这种情况一般都表示U盘的文件系统无法被操作系统识别&#xff0c;可能原因包括&#xff1a;不正确的插拔操作、病毒攻击、电源故障等。当我们遇到U盘打不开变成RAW的时候不要慌&#xff…

【C++\Qt项目实战】俄罗斯方块

俄罗斯方块 1 项目简介2 效果展示3 代码实现3.1 框架3.2 UI界面3.3 核心代码3.3.1 TetrisGameWindow.h3.3.2 TetrisGameWindow.cpp3.3.3 Subject.h3.3.4 Subject.cpp3.3.5 TetrisGame.h3.3.6 TetrisGame.cpp 4 运行效果 1 项目简介 本项目灵感来自经典的俄罗斯方块游戏&#x…

视频智能分析平台LntonAIServer安防监控平台花屏检测、马赛克检测功能介绍

视频监控系统在现代社会中扮演着至关重要的角色&#xff0c;无论是用于安全监控、交通管理还是其他用途&#xff0c;视频的质量直接关系到系统的可靠性和有效性。LntonAIServer通过新增的视频质量诊断功能&#xff0c;包括花屏检测和马赛克检测&#xff0c;进一步增强了视频监控…

Windows系统下安装JMeter

目录 一、官网下载JMeter 二、运行 JMeter 一、官网下载JMeter JMeter 官网安装地址 Apache JMeter - Apache JMeter™https://jmeter.apache.org/ 下载Windows版本 下载完成后 解压 二、运行 JMeter 打开bin目录 下面两个文件其中一个均可运行双击jmeter.bat 或者使用…

算法入门-深度优先搜索3

第六部分&#xff1a;深度优先搜索 112.路径总和&#xff08;简单&#xff09; 题目&#xff1a;给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果…