当前位置: 首页 > news >正文

JAVA笔记 | EasyExcel创建带有简单下拉框的导入模板

目录

前文

业务需求

具体代码

新增Handler

控制层


前文

SpringBoot笔记 | EasyExcel导入导出及基于模板导出_easyexcel模板导出-CSDN博客

业务需求

需要一个导出模板。一个列需要填写固定的值,或者方便用户填写。

自己需求,几个固定的字段对应固定的id,所以导出时,用户填写固定字段中文,导入时,通过名字匹配到id,插入数据库。然后网上找了挺多个的,但是要么很复杂,要么就是没说明白,最后找了这个最简单的实现。

具体代码

新增Handler

import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
import org.apache.poi.ss.usermodel.DataValidation;
import org.apache.poi.ss.usermodel.DataValidationConstraint;
import org.apache.poi.ss.usermodel.DataValidationHelper;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddressList;import java.util.Map;/*** @Author: ljd* @CreateTime: 2024-10-16*/
public class CustomSheetWriteHandler implements SheetWriteHandler {private Map<Integer, String[]> mapDropDown;public CustomSheetWriteHandler(Map<Integer, String[]> mapDropDown) {this.mapDropDown = mapDropDown;}@Overridepublic void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {}@Overridepublic void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {Sheet sheet = writeSheetHolder.getSheet();DataValidationHelper helper = sheet.getDataValidationHelper();for (Map.Entry<Integer, String[]> entry : mapDropDown.entrySet()) {CellRangeAddressList addressList = new CellRangeAddressList(1, 65535, entry.getKey(), entry.getKey());DataValidationConstraint constraint = helper.createExplicitListConstraint(entry.getValue());DataValidation dataValidation = helper.createValidation(constraint, addressList);dataValidation.setErrorStyle(DataValidation.ErrorStyle.STOP);dataValidation.setShowErrorBox(true);dataValidation.setSuppressDropDownArrow(true);dataValidation.createErrorBox("提示", "输入值与单元格定义格式不一致");dataValidation.createPromptBox("填写说明", "填写内容只能为下拉数据集中的类型");sheet.addValidationData(dataValidation);}}
}

控制层

为了方便都在写这层

/*** 获取导入模板*/@PostMapping("/importTemplate")@SaIgnorepublic void importTemplate(HttpServletResponse response) throws IOException {//用于下拉的数据源List<EduSubject> subjects = subjectMapper.selectList();if(CollectionUtil.isNotEmpty(subjects)){Map<Integer, String[]> mapDropDown = new HashMap<>();String[] sub = subjects.stream().map(EduSubject::getSubjectName).toArray(String[]::new);mapDropDown.put(1, sub);String fileName = URLEncoder.encode("XXX导入模板", "UTF-8");response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");EasyExcel.write(response.getOutputStream(), EduKnowledgePointsVo.class).sheet("知识点").registerWriteHandler(new CustomSheetWriteHandler(mapDropDown)).doWrite(Collections.EMPTY_LIST);}}

相关文章:

JAVA笔记 | EasyExcel创建带有简单下拉框的导入模板

目录 前文 业务需求 具体代码 新增Handler 控制层 前文 SpringBoot笔记 | EasyExcel导入导出及基于模板导出_easyexcel模板导出-CSDN博客 业务需求 需要一个导出模板。一个列需要填写固定的值&#xff0c;或者方便用户填写。 自己需求&#xff0c;几个固定的字段对应固…...

【含开题报告+文档+PPT+源码】贫困儿童一对一扶贫帮扶系统设计与实现

开题报告 根据《中华人民共和国慈善法》第五十八条规定&#xff0c;慈善组织确定慈善受益人&#xff0c;应当坚持公开、公平、公正的原则&#xff0c;不得指定慈善组织管理人员的利害关系人作为受益人[2]。以上所列举的平台基本没有做到公开、公平、公正的原则&#xff0c;例如…...

多系统萎缩不慌张,这些维生素是你的“隐形盾牌”!️

在这个快节奏的时代&#xff0c;健康成为了我们最宝贵的财富。而对于多系统萎缩&#xff08;MSA&#xff09;的患者来说&#xff0c;合理的营养补充更是维护身体机能、提升生活质量的关键一步。今天&#xff0c;就让我们一起揭秘那些能够成为多系统萎缩患者“守护神”的维生素吧…...

IGFBP7:免疫治疗新靶点

前 言 胰岛素样生长因子结合蛋白7&#xff08;IGFBP7&#xff09;是胰岛素超家族的生长促进肽成员&#xff0c;可与胰岛素和IGF结合&#xff0c;调控细胞生长和分化。IGFBP7在不同的肿瘤类型中表现出抑制或促进肿瘤生长的“自相矛盾”活性。研究发现IGFBP7可增强治疗性单克隆…...

深度学习模型的架构与应用:技术解析与未来展望

1. 引言 深度学习(Deep Learning)模型是当代人工智能的核心技术之一,广泛应用于语音识别、计算机视觉、自然语言处理、推荐系统等众多领域。深度学习通过构建多层神经网络,能够自动从大规模数据中学习复杂的特征和模式,其应用成果不仅推动了技术的飞跃,也带来了智能化产…...

机器学习——主要分类

前言&#xff1a; 机器学习是人工智能的重要分支之一&#xff0c;它通过分析数据来构建模型&#xff0c;并通过这些模型进行预测、分类或决策。随着数据量的迅速增长&#xff0c;机器学习在多个领域展现出巨大的应用潜力&#xff0c;推动了科技的进步。根据学习方式和数据的使用…...

Java密封类(Sealed Classes)增强详解

Java密封类&#xff08;Sealed Classes&#xff09;增强详解 Java 17引入了一个重要的新特性——密封类&#xff08;Sealed Classes&#xff09;&#xff0c;这一特性旨在增强Java编程语言的能力&#xff0c;提供了一种机制来限制哪些类可以继承一个给定的类或者实现一个给定的…...

鸿蒙如何自动生成二维码?QRCode组件

QRCode 用于显示单个二维码的组件。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 二维码组件的像素点数量与内容有关&#xff0c;当组件尺寸过小时&#xff0c;可能出现无法展示内容的情况&…...

【分布式知识】MapReduce详细介绍

文章目录 MapReduce概述1. MapReduce编程模型Map阶段Reduce阶段 2. Shuffle和Sort阶段3. MapReduce作业的执行流程4. MapReduce的优化和特性5. MapReduce的配置和调优 MapReduce局限性相关文献 MapReduce概述 MapReduce是一个分布式计算框架&#xff0c;它允许用户编写可以在大…...

JAVA八股

快速失败&#xff08;fail-fast&#xff09; 设计的目的是为了避免在遍历时对集合进行并发修改&#xff0c;从而引发潜在的不可预料的错误。 通过迭代器遍历集合时修改集合&#xff1a; 如果你使用Iterator遍历集合&#xff0c;然后直接使用集合的修改方法&#xff08;如add(…...

关于武汉芯景科技有限公司的限流开关芯片XJ6288开发指南(兼容SY6288)

一、芯片引脚介绍 1.芯片引脚 二、系统结构图 三、功能描述 1.EN引脚控制IN和OUT引脚的通断 2.OCB引脚指示状态 3.过流自动断开...

指令:计算机的语言(五)

2.9 人机交互 ASCII与二进制 对应表略 字节转移指令 lbu&#xff1a;加载无符号字节&#xff0c;从内存中加载1个字节&#xff0c;放在寄存器最右边8位。 sb&#xff1a;存储字节指令&#xff0c;从寄存器的最右边取1个字节并将其写入内存。 复制1个字节顺序如下&#xf…...

C#笔记(1)

解决方案&#xff1a; 【1】组织项目&#xff1a;把项目放在放在一个解决方案中&#xff0c;统一开发&#xff0c;统一编译。 【2】管理项目&#xff1a;开发中的任何问题&#xff0c;在统一编译过程中&#xff0c;都能随时发现。也可以添加第三方的库文件。 命名空间: 命名空…...

SSDF攻击、防御与展望

摘要&#xff1a; 随着无线通信业务的不断发展&#xff0c;频域也越来越成为了一种珍贵的稀缺资源&#xff0c;与此同时&#xff0c;相应的无线电安全问题层出不穷&#xff0c;为无线通信造成了十分恶劣的影响&#xff0c;本文从深入理解认知无线电安全开始&#xff0c;对一些典…...

MedMamba代码解释及用于糖尿病视网膜病变分类

MedMamba原理和用于糖尿病视网膜病变检测尝试 1.MedMamba原理 MedMamba发表于2024.9.28&#xff0c;是构建在Vision Mamba基础之上&#xff0c;融合了卷积神经网的架构&#xff0c;结构如下图&#xff1a; 原理简述就是图片输入后按通道输入后切分为两部分&#xff0c;一部分走…...

单点登录的要点

单点登录&#xff08;SSO&#xff09;是一种身份验证服务&#xff0c;它允许用户使用一组凭据登录一次&#xff0c;然后在多个应用程序中访问其他应用程序而无需重新进行身份验证。这样&#xff0c;用户只需一次登录即可访问整个应用生态系统&#xff0c;提高了用户体验并简化了…...

linux线程 | 一点通你的互斥锁 | 同步与互斥

前言&#xff1a;本篇文章主要讲述linux线程的互斥的知识。 讲解流程为先讲解锁的工作原理&#xff0c; 再自己封装一下锁并且使用一下。 做完这些就要输出一堆理论性的东西&#xff0c; 但博主会总结两条结论&#xff01;&#xff01;最后就是讲一下死锁。 那么&#xff0c; 废…...

全栈开发小项目

用到的技术栈&#xff1a; nodejswebpackknockoutmongodbPM2rabbitmq 以下是一个综合指南&#xff0c;展示如何将 Node.js、Webpack、Knockout.js、MongoDB、PM2 和 RabbitMQ 集成到一个项目中。 我们将在这一项目中添加 RabbitMQ&#xff0c;用于处理消息队列。这对于任务分…...

批处理一键创建扫描仪桌面打开快捷方式图标 简单直接有效 扫描文档图片的应急策略

办公生活中&#xff0c;我们在安装完多功能一体机的打印驱动之后&#xff0c;找不到扫描文件的地方&#xff0c;如果驱动程序安装正确&#xff0c;我们可以用系统自带的扫描仪程序调用这种打印机或复印机的扫描程序即可&#xff0c;它在电脑系统中的位置一般是&#xff1a;C:\W…...

【服务器知识】Tomcat简单入门

文章目录 概述Apache Tomcat 介绍主要特性版本历史使用场景 核心架构Valve机制详细说明请求处理过程 Tomcat安装Windows系统下Tomcat的安装与配置&#xff1a;步骤1&#xff1a;安装JDK步骤2&#xff1a;下载Tomcat步骤3&#xff1a;解压Tomcat步骤4&#xff1a;配置环境变量&a…...

【PHP 8.9命名空间终极指南】:5大突破性增强、3个迁移避坑清单与向后兼容性权威验证

第一章&#xff1a;PHP 8.9命名空间增强的演进背景与核心定位PHP 命名空间自 5.3 版本引入以来&#xff0c;已成为组织大型代码库的事实标准。然而&#xff0c;随着现代 PHP 应用向模块化、跨域共享和静态分析深度依赖方向演进&#xff0c;原有命名空间机制在别名解析、嵌套声明…...

【限时技术解禁】GraalVM静态镜像内存优化速查表(含JFR+Native Memory Tracking双验证脚本),仅开放72小时下载

第一章&#xff1a;GraalVM静态镜像内存优化快速接入全景概览GraalVM 静态镜像&#xff08;Native Image&#xff09;通过提前编译&#xff08;AOT&#xff09;将 Java 应用编译为独立、无 JVM 依赖的原生可执行文件&#xff0c;在启动速度与内存占用方面具备显著优势。然而&am…...

低代码开发,降低成本的同时提升质量

一、低代码开发&#xff0c;企业数字化转型的新利器在当今数字化时代&#xff0c;企业面临着快速变化的市场环境和日益增长的业务需求。传统的软件开发方式往往需要耗费大量的时间、人力和物力&#xff0c;难以满足企业对应用系统的快速迭代和个性化需求。而低代码开发平台的出…...

详细解析Spring如何解决循环依赖问题地

AI训练存储选型的演进路线 第一阶段&#xff1a;单机直连时代 早期的深度学习数据集较小&#xff0c;模型训练通常在单台服务器或单张GPU卡上完成。此时直接将数据存储在训练机器的本地NVMe SSD/HDD上。 其优势在于IO延迟最低&#xff0c;吞吐量极高&#xff0c;也就是“数据离…...

CMake Converter终极指南:三步实现Visual Studio到CMake的自动化迁移

CMake Converter终极指南&#xff1a;三步实现Visual Studio到CMake的自动化迁移 【免费下载链接】cmakeconverter This project aims to facilitate the conversion of Visual Studio to CMake projects. 项目地址: https://gitcode.com/gh_mirrors/cm/cmakeconverter …...

食品行业设备管理系统:筑牢合规追溯防线,规范清洁维护记录

食品行业的核心底线是“安全与合规”&#xff0c;而生产设备作为食品加工的核心载体&#xff0c;其清洁度、运行状态、维护记录直接决定食品质量&#xff0c;更是应对SC、HACCP、ISO22000等合规审计的关键。不同于其他行业&#xff0c;食品生产设备&#xff08;如搅拌罐、灌装机…...

从领域驱动到本体论:AI 时代的架构方法论变了必

从0构建WAV文件&#xff1a;读懂计算机文件的本质 虽然接触计算机有一段时间了&#xff0c;但是我的视野一直局限于一个较小的范围之内&#xff0c;往往只能看到于算法竞赛相关的内容&#xff0c;计算机各种文件在我看来十分复杂&#xff0c;认为构建他们并能达到目的是一件困难…...

每日安全情报报告 · 2026-04-09

每日安全情报报告 2026-04-09 发布时间&#xff1a;2026-04-09 11:33 报告周期&#xff1a;近 24–48 小时 风险标注&#xff1a;&#x1f534; 严重&#xff08;CVSS ≥ 9.0&#xff09;&#xff5c;&#x1f7e0; 高危&#xff08;CVSS 7.0–8.9&#xff09;&#xff5c;&am…...

PHP 8.9 JIT调试稀缺资源包首发:含自研jit-trace-analyzer工具链、12个真实微服务JIT崩溃core dump样本(限前500名下载)

第一章&#xff1a;PHP 8.9 JIT调试稀缺资源包发布说明 PHP 社区正式发布首个面向 PHP 8.9&#xff08;开发代号“Vesuvius”&#xff09;的 JIT 调试资源包&#xff08;JIT Debug Resource Pack, JD-RP v0.1.0&#xff09;&#xff0c;专为深度分析 OPCache JIT 编译行为、寄存…...

向华为学习——解读华为战略执行全解码从规划到行动的DSTE与BLM模型集成应用方案【附全文阅读】

华为通过DSTE流程与BLM模型集成,实现战略从规划到执行的全流程管理。DSTE构建战略执行时间轴,BLM模型提供战略制定到执行框架,两者协同将长期规划拆解为年度计划,并通过绩效与资源保障闭环落地[4]。 关联阅读索引: 收藏不迷路——耗时三天完成整理 华为IPD流程体系战略解码…...