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

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

浅谈智能操控及无线测温产品在马来西亚理文造纸雪邦热电站项目中的应用

摘要&#xff1a;为避免因电线接头松动、电缆老化等引发高温造成火灾&#xff0c;所造成的的经济损失巨大&#xff0c;在一些电气设备如大电流电缆设备节点、电力设备局部异常升温部位、开关柜的动静触头&#xff0c;进线与出线母排接点、整流柜中的电气接点、变压器节点、变电…...

打开 Java 新的大门,Solon v2.5.10 发布

Solon 是什么框架&#xff1f; Java 生态级应用开发框架。从零开始构建&#xff0c;有自己的标准规范与开放生态&#xff08;历时五年&#xff0c;具备全球第二级别的生态规模&#xff09;。与其他框架相比&#xff0c;解决了两个重要的痛点&#xff1a;启动慢&#xff0c;费内…...

unity动画_UI动画案例 c#

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

“岗课赛证”融通的物联网综合实训室建设方案

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

Python自动化运维实战——Telnetlib和Netmiko自动化管理网络设备

❤️博客主页&#xff1a; iknow181&#x1f525;系列专栏&#xff1a; Python、JavaSE、JavaWeb、CCNP&#x1f389;欢迎大家点赞&#x1f44d;收藏⭐评论✍ 目录 一、前言 二、准备工作 三、Telnetlib Telnetlib介绍 Telnetlib模块及操作方法介绍 Telnetlib配置设备 T…...

中文编程开发语言工具开发的实际软件案例:称重管理系统软件

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

CSS如何画出平行四边形

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

【计算机网络笔记】计算机网络性能(1)——速率、带宽、延迟

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

数字孪生与智慧城市:重塑未来城市生活的奇迹

今天&#xff0c;我们将探讨数字孪生和智慧城市两个颠覆性技术&#xff0c;它们正引领着未来城市生活的巨大变革。随着科技的飞速发展&#xff0c;数字孪生和智慧城市成为实现可持续发展和提升居民生活质量的关键策略。 数字孪生&#xff1a;实现现实与虚拟的完美融合 数字孪生…...

大势智慧是否支持航拍图片生成3D建模?

答&#xff1a;支持的&#xff0c;重建大师软件可以导入照片完成三维建模。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件&#xff0c;输入倾斜照片&#xff0c;激光点云&#xff0c;POS信息及像控点&#xff0c;输出高精度彩色网格模型&#xff0c;可…...

ASO优化之增加APP应用下载安装量的技巧1

想要增加APP应用的下载安装量&#xff0c;首先要在发布之前&#xff0c;分析我们的应用推广策略该如何运作并进行调整。提高知名度的基础是关键词&#xff0c;其次使用社交网络来推广我们的应用程序。 1、基础与规划。 在启动应用程序或者是实行ASO计划之前&#xff0c;需要了…...

点云从入门到精通技术详解100篇-雨雾环境下多传感器融合SLAM方法

目录 前言 国内外研究现状 传统SLAM研究现状 多传感器融合SLAM研究现状...

electron安装失败时配置

electron下载前配置 使用命令打开npm全局配置&#xff0c;C盘下的.npmrc文件。 npm config edit 然后在空白处添加 electron_builder_binaries_mirrorhttps://npmmirror.com/mirrors/electron-builder-binaries/ electron_mirrorhttps://cdn.npmmirror.com/binaries/electr…...

酷开科技为你的电视增添魅力,点亮每一个娱乐瞬间!

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

Spring Cloud 之 Feign 简介及简单DEMO的搭建

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

SAS国际认证考试报名流程

文章目录 注册SAS账号登录SAS账号预约考试考试注意事项 注册SAS账号 SAS考试报名入口&#xff1a;https://home.pearsonvue.com/sas 注册SAS账号 邮箱验证 点击上述邮件发送来的链接&#xff0c;跳转到如下界面。输入密码即可。 完成注册。选择login。 登录SAS账号 输入Email …...

CSS 什么是外边距重叠?重叠的结果是什么?

外边距重叠是CSS中的一种现象&#xff0c;当两个&#xff08;或更多&#xff09;相邻的元素具有外边距时&#xff0c;它们的外边距可能会合并&#xff08;重叠&#xff09;成一个较大的外边距&#xff0c;而不是简单地叠加在一起。外边距重叠通常出现在垂直方向上&#xff0c;有…...

MultiPlayerShoot----C++学习记录01打包测试项目

首先将多人游戏插件plug文件夹移至项目目录 打开config/DefaultEngine.ini&#xff08;5.0的虚幻引擎内容略不一样&#xff09;和Game.ini对里边的内容进行编辑。 DefaultEngine.ini [/Script/Engine.GameEngine] NetDriverDefinitions(DefName"GameNetDriver",Driv…...

DayZ单机模组终极指南:打造专属末日世界的5个关键步骤

DayZ单机模组终极指南&#xff1a;打造专属末日世界的5个关键步骤 【免费下载链接】DayZCommunityOfflineMode A community made offline mod for DayZ Standalone 项目地址: https://gitcode.com/gh_mirrors/da/DayZCommunityOfflineMode 厌倦了DayZ在线服务器中的网络…...

抖音视频批量下载工具终极指南:3分钟实现高效无水印下载

抖音视频批量下载工具终极指南&#xff1a;3分钟实现高效无水印下载 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback sup…...

量子变分算法优化:ADAPT-VQE与ASC协同技术解析

1. 量子变分算法优化背景与挑战 量子变分特征求解器&#xff08;VQE&#xff09;作为当前量子计算化学模拟的核心算法&#xff0c;其核心思想是通过参数化量子电路&#xff08;PQC&#xff09;制备试探波函数&#xff0c;并利用经典优化器调整参数以逼近目标哈密顿量的基态能量…...

华硕笔记本性能优化神器:3步掌握G-Helper轻量级控制中心

华硕笔记本性能优化神器&#xff1a;3步掌握G-Helper轻量级控制中心 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, …...

【RK3588-AI-003】RK3588串口+SSH远程连接配置+文件互传实操

一、前言 很多刚入手RK3588开发板做AI部署、嵌入式开发的同学&#xff0c;都会遇到三大难题&#xff1a; ❌ 不知道怎么接线、看不懂串口打印日志&#xff0c;调试报错无从下手&#xff1b; ❌ 每次重启开发板IP都会变&#xff0c;频繁修改连接地址&#xff0c;开发极其麻烦&…...

别再手动折腾了!CubeMX生成MDK工程后,一键开启STM32F4的FPU和DSP库(附完整配置流程)

解放双手&#xff1a;STM32F4硬件加速全自动配置指南 每次新建工程都要重复配置FPU和DSP库&#xff1f;是时候告别这种低效操作了。本文将带你用CubeMXMDK打造一套零手动干预的完整工作流&#xff0c;让硬件加速功能从工程创建之初就自动就位。 1. 环境准备与工程创建 在开始之…...

PotPlayer字幕翻译插件终极指南:3步实现跨语言视频无障碍观看

PotPlayer字幕翻译插件终极指南&#xff1a;3步实现跨语言视频无障碍观看 【免费下载链接】PotPlayer_Subtitle_Translate_Baidu PotPlayer 字幕在线翻译插件 - 百度平台 项目地址: https://gitcode.com/gh_mirrors/po/PotPlayer_Subtitle_Translate_Baidu 还在为外语视…...

ARM PMU性能监控机制与微架构事件解析

1. ARM PMU性能监控体系深度解析性能监控单元(PMU)是现代处理器中用于统计硬件事件的关键模块&#xff0c;它如同处理器的"听诊器"&#xff0c;能够精确捕捉微架构层面的各类行为。在ARMv8/v9架构中&#xff0c;PMU通过事件计数器机制实现对指令流水线、缓存子系统、…...

给硬件工程师的芯片FT测试入门:从ATE、Handler到Socket,一次搞懂所有‘治具’

芯片FT测试全流程实战指南&#xff1a;从设备选型到治具配置 第一次走进芯片测试车间时&#xff0c;我被眼前那些闪烁着信号灯的庞大设备和精密治具震撼到了。作为硬件工程师&#xff0c;我们可能更熟悉PCB设计和电路仿真&#xff0c;但当芯片进入量产阶段&#xff0c;如何确保…...

稳定币深度解析:从技术内核到生态未来

稳定币深度解析&#xff1a;从技术内核到生态未来 引言 在加密货币世界剧烈波动的浪潮中&#xff0c;稳定币如同一座坚不可摧的桥梁&#xff0c;连接着传统金融与去中心化未来。它不仅是DeFi乐高积木中最关键的基座&#xff0c;更在跨境支付、元宇宙经济等前沿领域扮演着核心…...