EasyExcel导出带有下拉框的表头模板
1.接口层
@ApiOperation("其他费用配置-模版下载")@GetMapping("/downloadTemplate")public void downloadTemplate(HttpServletResponse response) {try {List<String> list = Arrays.asList("集团", "平台", "部门", "店铺", "年月", "币别", "费用项目", "金额","分摊类型", "分摊依据", "订单号", "备注");ExcelUtils.exportTemplate(response, ExcelUtils.getSimpleHead(list), new SheetWriteHandler() {@Overridepublic void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {//费用项目的下拉框的值String[] expenseItem = new String[]{"退款", "库存损益", "库存清理", "商品成本", "平台费", "收款费用", "物流成本", "包材费", "资金成本", "营销费","刊登费", "vat费", "炒分", "云主机及vps", "vps及其他", "固定服务费分摊", "GBC罚款", "销毁成本", "其他款项", "罚款或暂扣货款金额", "收款费及其他", "服务费"};//分摊类型的下拉框的值String[] shareType = new String[]{"店铺承担", "部门承担", "集团承担", "平台承担", "公司承担"};//分摊依据的下拉框的值String[] shareGist = new String[]{"总收入", "商品成本", "计算重量", "订单系数", "订单量"};Map<Integer, String[]> mapDropDown = new HashMap<>();mapDropDown.put(6, expenseItem);mapDropDown.put(8, shareType);mapDropDown.put(9, shareGist);ExcelUtils.sheetConfig(writeSheetHolder, mapDropDown);}}, "其他费用配置", "其他费用配置");} catch (IOException e) {e.printStackTrace();}}
2.ExcelUtils
//带下拉的模板public static <T> void exportTemplate(HttpServletResponse response, List<List<String>> head, SheetWriteHandler handler, String fileName, String sheetName) throws IOException {try {//获取指定路径文件的MIME类型setDownloadResponse(response, fileName);EasyExcel.write(response.getOutputStream()).head(head).autoCloseStream(Boolean.FALSE).sheet(sheetName).registerWriteHandler(handler).doWrite(new ArrayList<>());} catch (Exception e) {returnErrorMessage(response, e);}}/*** 获取下载excel 的响应对象** @param response 响应对象* @param fileName 文件路径* @return 响应对象* @throws Exception 异常对象*/public static void setDownloadResponse(HttpServletResponse response, String fileName) throws Exception {response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharacterEncoding(StandardCharsets.UTF_8.name());//反馈给客户端文件用于下载response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + URLEncoder.encode(fileName + ExcelTypeEnum.XLSX.getValue(), StandardCharsets.UTF_8.name()));}/*** 返回文件下载失败的json 原因** @param response 响应对象* @param exception 异常对象* @throws IOException IO异常*/private static void returnErrorMessage(HttpServletResponse response, Exception exception) throws IOException {// 重置responseresponse.reset();response.setContentType("application/json");response.setCharacterEncoding(StandardCharsets.UTF_8.name());Map<String, String> map = new HashMap<>();map.put("status", "failure");map.put("message", "下载文件失败" + exception.getMessage());response.getWriter().println(JSON.toJSONString(map));}//设置下拉框public static void sheetConfig(WriteSheetHolder writeSheetHolder, Map<Integer, String[]> mapDropDown) {Sheet sheet = writeSheetHolder.getSheet();///开始设置下拉框DataValidationHelper helper = sheet.getDataValidationHelper();//设置下拉框for (Map.Entry<Integer, String[]> entry : mapDropDown.entrySet()) {/***起始行、终止行、起始列、终止列**/CellRangeAddressList addressList = new CellRangeAddressList(1, 1000, entry.getKey(), entry.getKey());/***设置下拉框数据**/DataValidationConstraint constraint = helper.createExplicitListConstraint(entry.getValue());DataValidation dataValidation = helper.createValidation(constraint, addressList);/***处理Excel兼容性问题**/if (dataValidation instanceof XSSFDataValidation) {dataValidation.setSuppressDropDownArrow(true);dataValidation.setShowErrorBox(true);} else {dataValidation.setSuppressDropDownArrow(false);}sheet.addValidationData(dataValidation);}}
实现效果
相关文章:

EasyExcel导出带有下拉框的表头模板
1.接口层 ApiOperation("其他费用配置-模版下载")GetMapping("/downloadTemplate")public void downloadTemplate(HttpServletResponse response) {try {List<String> list Arrays.asList("集团", "平台", "部门", &…...
fastadmin找不到后台控制器。登录之后找不到后台控制器
nginx加配置项 伪静态那块 location / { if (!-e KaTeX parse error: Expected }, got EOF at end of input: … rewrite ^(.*) /index.php?s 1 l a s t ; b r e a k ; r e w r i t e ( . ? p ˙ h p ) ( / . ) 1 last; break; rewrite ^(.?\.php)(/.) 1last;break;rewrit…...

浅谈智能操控及无线测温产品在马来西亚理文造纸雪邦热电站项目中的应用
摘要:为避免因电线接头松动、电缆老化等引发高温造成火灾,所造成的的经济损失巨大,在一些电气设备如大电流电缆设备节点、电力设备局部异常升温部位、开关柜的动静触头,进线与出线母排接点、整流柜中的电气接点、变压器节点、变电…...
打开 Java 新的大门,Solon v2.5.10 发布
Solon 是什么框架? Java 生态级应用开发框架。从零开始构建,有自己的标准规范与开放生态(历时五年,具备全球第二级别的生态规模)。与其他框架相比,解决了两个重要的痛点:启动慢,费内…...

unity动画_UI动画案例 c#
首先我们打开一个项目 在这个初始界面我们需要做一些准备工作 创建基础通用包 在场景上创建一个Cube 选中Cube 在Window下点击Animation拖拽至运行窗口 点击创建 保存后 这个操作是给Cube添加了一个组件 对Cube_添加一个Position动画 设置几个帧位置的坐标(x,y,z)值 点击运行测…...

“岗课赛证”融通的物联网综合实训室建设方案
一、概述 随着5G技术的普及应用和产业经济的革新发展,物联网产业所呈现的广阔前景带来了对创新型技术技能人才的迫切需求。高职院校物联网专业建设也因此转变为面向国家战略性新兴产业发展需求。当前,“岗位课程竞赛证书”融通的培育理念,是高职院校物联网人才培养和专业优化的…...

Python自动化运维实战——Telnetlib和Netmiko自动化管理网络设备
❤️博客主页: iknow181🔥系列专栏: Python、JavaSE、JavaWeb、CCNP🎉欢迎大家点赞👍收藏⭐评论✍ 目录 一、前言 二、准备工作 三、Telnetlib Telnetlib介绍 Telnetlib模块及操作方法介绍 Telnetlib配置设备 T…...

中文编程开发语言工具开发的实际软件案例:称重管理系统软件
中文编程开发语言工具开发的实际软件案例:称重管理系统软件 中文编程开发语言工具开发的实际软件案例:称重管理系统软件,软件可以安装在电脑上,也可以安装在收银机上,支持触摸和鼠标点,想学编程可以关注系统…...

CSS如何画出平行四边形
其实如果项目中有这样的画图 还是会用到的比如 看起来样子怪怪的 哈哈 但是确实可以完成一些需求哈哈哈 这个就要用到一个css3转换的一个 属性了 skew 让一个元素再平面上进行倾斜 div {width: 200px;height: 50px;background-color: #f00;transform: skew(20deg);margin: 100…...

【计算机网络笔记】计算机网络性能(1)——速率、带宽、延迟
系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 系列文章目录速率带宽延迟/时延(delay或latency) 下面介绍一些计算机网络中常用的性能指标。在本篇中涉及速…...

数字孪生与智慧城市:重塑未来城市生活的奇迹
今天,我们将探讨数字孪生和智慧城市两个颠覆性技术,它们正引领着未来城市生活的巨大变革。随着科技的飞速发展,数字孪生和智慧城市成为实现可持续发展和提升居民生活质量的关键策略。 数字孪生:实现现实与虚拟的完美融合 数字孪生…...
大势智慧是否支持航拍图片生成3D建模?
答:支持的,重建大师软件可以导入照片完成三维建模。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件,输入倾斜照片,激光点云,POS信息及像控点,输出高精度彩色网格模型,可…...

ASO优化之增加APP应用下载安装量的技巧1
想要增加APP应用的下载安装量,首先要在发布之前,分析我们的应用推广策略该如何运作并进行调整。提高知名度的基础是关键词,其次使用社交网络来推广我们的应用程序。 1、基础与规划。 在启动应用程序或者是实行ASO计划之前,需要了…...
点云从入门到精通技术详解100篇-雨雾环境下多传感器融合SLAM方法
目录 前言 国内外研究现状 传统SLAM研究现状 多传感器融合SLAM研究现状...
electron安装失败时配置
electron下载前配置 使用命令打开npm全局配置,C盘下的.npmrc文件。 npm config edit 然后在空白处添加 electron_builder_binaries_mirrorhttps://npmmirror.com/mirrors/electron-builder-binaries/ electron_mirrorhttps://cdn.npmmirror.com/binaries/electr…...

酷开科技为你的电视增添魅力,点亮每一个娱乐瞬间!
有没有想过有一天,你的电视可以像超人一样,为你的每一个娱乐时刻带来炫酷的观影体验。酷开科技,作为智能电视领域内的领军企业,正是你期待的那个“超人”,不妨让我们探索一下酷开科技的独特魅力,为你枯燥乏…...

Spring Cloud 之 Feign 简介及简单DEMO的搭建
Feign简介: Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验。 Feign是在RestTemplate基础上封装的,使用注解的方式来声明一组与服务提供者Rest接口所对应的本地…...

SAS国际认证考试报名流程
文章目录 注册SAS账号登录SAS账号预约考试考试注意事项 注册SAS账号 SAS考试报名入口:https://home.pearsonvue.com/sas 注册SAS账号 邮箱验证 点击上述邮件发送来的链接,跳转到如下界面。输入密码即可。 完成注册。选择login。 登录SAS账号 输入Email …...
CSS 什么是外边距重叠?重叠的结果是什么?
外边距重叠是CSS中的一种现象,当两个(或更多)相邻的元素具有外边距时,它们的外边距可能会合并(重叠)成一个较大的外边距,而不是简单地叠加在一起。外边距重叠通常出现在垂直方向上,有…...

MultiPlayerShoot----C++学习记录01打包测试项目
首先将多人游戏插件plug文件夹移至项目目录 打开config/DefaultEngine.ini(5.0的虚幻引擎内容略不一样)和Game.ini对里边的内容进行编辑。 DefaultEngine.ini [/Script/Engine.GameEngine] NetDriverDefinitions(DefName"GameNetDriver",Driv…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...