导出Excel实现单元格自动合并(EasyExcel)

server/2025/1/13 5:53:52/

前言

    EasyExcel实现单元格合并的导出。效果如下:
在这里插入图片描述


一、EasyExcel是什么?

    这个我就不介绍了,阿里出的,但是据说现在EasyExcel停止维护了,不过不要紧,目前依然好用。后期可能被FastExcel替代,开发这个的团队好像就是EasyExcel那一波人。

二、使用步骤

1.引入库

    easyExcel依赖引入,注意其实poi依赖也最好引入,但是要注意版本差异。

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId>
</dependency>

2.导出实现

1. controller:

/*** 导出分区工单分类关键指标分析数据(不绕社区)*/@ResourceAction(id = "exportYearMonthParkStageKeyCount", name = "导出分区工单分类关键指标分析数据")@GetMapping("/exportYearMonthParkStageKeyCount")public void exportYearMonthParkStageKeyCount(WorkOrderCountQueryRequestVo requestVo, HttpServletResponse response) {try {// 设置响应头response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");String fileName = URLEncoder.encode(DateUtil.format(DateUtil.date(), DatePattern.PURE_DATETIME_PATTERN) + "关键指标分析导出" + ".xlsx", StandardCharsets.UTF_8).replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename=" + fileName);//组织导出数据Map<String, Object> exportDataMap = orderService.exportYearMonthParkStageKeyCount(requestVo);List<List<String>> headList = (List<List<String>>) exportDataMap.get("headList");List<List<Object>> dataList = (List<List<Object>>) exportDataMap.get("dataList");ExcelWriterBuilder excelWriterBuilder = EasyExcel.write(response.getOutputStream());excelWriterBuilder.registerWriteHandler(new CustomCellWriteHeightStrategy((short) 30, (short) 30)).registerWriteHandler(new CustomCellWriteWidthStrategy()).registerWriteHandler(new CustomCellWriteHandler(2,0,dataList.size()));excelWriterBuilder.head(headList).sheet("关键指标分析").doWrite(dataList);} catch (Exception e) {throw new RuntimeException("导出分区工单分类关键指标分析数据失败");}}

2. serviceImpl:

public Map<String, Object> exportYearMonthParkStageKeyCount(WorkOrderCountQueryRequestVo requestVo) {Map<String, Object> dataMap = new HashMap<>();String yearMonthStr = requestVo.getYearMonthStr();String allHead = "关键指标分析-";Integer type = requestVo.getType();String rateHeadName = "";if (type != null){//1计划,2应急if (type == 1){allHead += "计划工单\n";rateHeadName = "计划工单完成率";}if (type == 2){allHead += "应急工单\n";rateHeadName = "应急工单完成率";}}allHead += 

http://www.ppmy.cn/server/157945.html

相关文章

图片和短信验证码(头条项目-06)

1 图形验证码接口设计 将后端⽣成的图⽚验证码存储在redis数据库2号库。 结构&#xff1a; {img_uuid:0594} 1.1 创建验证码⼦应⽤ $ cd apps $ python ../../manage.py startapp verifications # 注册新应⽤ INSTALLED_APPS [django.contrib.admin,django.contrib.auth,…

【多模态LLM】LLaVA系列算法架构演进:LLaVA(1.0->1.5->Next(1.6)->NeXT(Video))

LLaVA 模型架构目标是结合预训练LLM和视觉模型的能力&#xff0c;llava使用Vicuna作为的LLM f ϕ ( ⋅ ) f_{\phi}(\cdot) fϕ​(⋅)&#xff08;语言解码器&#xff09;&#xff0c;CLIP作为视觉编码器。 视觉编码器&#xff1a;使用预训练的CLIP视觉编码器ViT-L/14来提取图像…

Vue.js组件开发,AI时代的前端新玩法

AI可不只是写写小说、聊聊天&#xff0c;现在它的触角已经伸到了程序员的代码世界里。特别是前端开发&#xff0c;很多人都在尝试用ChatGPT或者类似的AI工具来写代码&#xff0c;甚至直接生成Vue.js组件。有些人感叹&#xff0c;"写代码的时代是不是要结束了&#xff1f;&…

腾讯云服务器Centos7.6新开或者迁移中java全部依赖环境准备(jdk+nginx+mysql+redis+nacos+kafka等)

1 安装java环境 https://blog.csdn.net/CleverCode/article/details/109160568 2 安装nginx ssl只用配置nacos和网关就可以了。 https://blog.csdn.net/CleverCode/article/details/145078807 3 安装mysql https://blog.csdn.net/CleverCode/article/details/128354479 4…

RepPoints: Point Set Representation for Object Detection—用于目标检测的点集表示

用于目标检测的点集表示-RepDet全网最全 International Conference on Computer Vision(ICCV 2019) 对这种检测模型生成的点进行基于点的匹配过程完成跟踪 但是可否保证随着人的运动或者形状的改变每次选取的关键点是否一致呢&#xff1f; 文章目录 用于目标检测的点集表示-Rep…

C# OpenCV机器视觉:波形相似度

在城市边缘的一个小而温馨的实验室里&#xff0c;阿明正全神贯注地坐在电脑前&#xff0c;周围堆满了各种电子仪器和写满密密麻麻公式的笔记本。他即将踏上一段充满挑战与惊喜的旅程 —— 利用 OpenCvSharp 探索波形图相似度的奥秘&#xff0c;阳光透过窗户&#xff0c;仿佛也在…

腾讯云AI代码助手编程挑战赛-知识百科AI

作品简介 知识百科AI这一编程主要用于对于小朋友的探索力的开发&#xff0c;让小朋友在一开始就对学习具有探索精神。在信息化时代下&#xff0c;会主动去学习自己认知以外的知识&#xff0c;同时丰富了眼界&#xff0c;开拓了新的知识。同时催生了在大数据时代下的信息共享化…

Linux第一个系统程序---进度条

进度条---命令行版本 回车换行 其实本质上回车和换行是不同概念&#xff0c;我们用一张图来简单的理解一下&#xff1a; 在计算机语言当中&#xff1a; 换行符&#xff1a;\n 回车符&#xff1a;\r \r\n&#xff1a;回车换行 这时候有人可能会有疑问&#xff1a;我在学习C…