当前位置: 首页 > 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);}}
实现效果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

http://www.lryc.cn/news/196853.html

相关文章:

  • fastadmin找不到后台控制器。登录之后找不到后台控制器
  • 浅谈智能操控及无线测温产品在马来西亚理文造纸雪邦热电站项目中的应用
  • 打开 Java 新的大门,Solon v2.5.10 发布
  • unity动画_UI动画案例 c#
  • “岗课赛证”融通的物联网综合实训室建设方案
  • Python自动化运维实战——Telnetlib和Netmiko自动化管理网络设备
  • 中文编程开发语言工具开发的实际软件案例:称重管理系统软件
  • CSS如何画出平行四边形
  • 【计算机网络笔记】计算机网络性能(1)——速率、带宽、延迟
  • 数字孪生与智慧城市:重塑未来城市生活的奇迹
  • 大势智慧是否支持航拍图片生成3D建模?
  • ASO优化之增加APP应用下载安装量的技巧1
  • 点云从入门到精通技术详解100篇-雨雾环境下多传感器融合SLAM方法
  • electron安装失败时配置
  • 酷开科技为你的电视增添魅力,点亮每一个娱乐瞬间!
  • Spring Cloud 之 Feign 简介及简单DEMO的搭建
  • SAS国际认证考试报名流程
  • CSS 什么是外边距重叠?重叠的结果是什么?
  • MultiPlayerShoot----C++学习记录01打包测试项目
  • 机器学习——奇异值分解二(特征分解+SVD纯理解)
  • 牛客:FZ35 滑动窗口最小值
  • MAC上设置IDEA如何一个窗口打开多个项目,多个tab
  • 【学习笔记】RabbitMQ02:交换机,以及结合springboot快速开始
  • 【Python机器学习】零基础掌握OPTICS聚类
  • 【HuggingFace文档学习】Bert的token分类与句分类
  • 354 俄罗斯套娃信封问题(贪心+二分)
  • Vue页面结构
  • 【广州华锐互动】利用VR开展高压电缆运维实训,提供更加真实、安全的学习环境
  • git的介绍和安装、常用命令、忽略文件、分支
  • DNS(二)