EasyExcel合并单元格(一)
前言
导出excel,介绍如何使用LoopMergeStrategy实现简单的合并
效果
每隔2行,合并一次
横向合并
横向和纵向合并
实现
导入依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.7</version></dependency><!-- https://mvnrepository.com/artifact/com.google.guava/guava --><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.1-jre</version></dependency><!-- springboot test启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency>
单元测试
/*** 合并单元格* @date 01/31/2021 03:11*/
public class Demo {/*** 合并单元格*/@Testpublic void testMyMergeWrite() {String fileName = "/Users/quanlinglong/Downloads/mergeDemo/" + "mymergeWrite" + System.currentTimeMillis() + ".xlsx";System.out.println("fileName = " + fileName);// 每隔2行合并一次,横向合并1列,从第0列开始
// LoopMergeStrategy loopMergeStrategy = new LoopMergeStrategy(2, 1, 0);// 上面的等价于
// LoopMergeStrategy loopMergeStrategy = new LoopMergeStrategy(2, 0);// 从第columnIndex列开始,向右合并(columnExtend-1)列
// LoopMergeStrategy loopMergeStrategy = new LoopMergeStrategy(1, 2, 0);// 合并2行2列LoopMergeStrategy loopMergeStrategy = new LoopMergeStrategy(2, 2, 0);EasyExcel.write(fileName, WriteDemo.DemoData.class).registerWriteHandler(loopMergeStrategy).sheet("aaa").doWrite(data());}private List<List<Object>> data() {List<List<Object>> result = new ArrayList<>();for (int i = 0; i < 3; i++) {result.add(Lists.newArrayList("标题" + i, new Date(), i * 0.1));}return result;}
}
分析LoopMergeStrategy类,它继承AbstractRowWriteHandler,在afterRowDispose方法里对每行做了处理,LoopMergeStrategy的构造函数传参是用来设置合并范围CellRangeAddress,再添加到当前sheet。
public void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer relativeRowIndex, Boolean isHead) {if (!isHead) {if (relativeRowIndex % this.eachRow == 0) {CellRangeAddress cellRangeAddress = new CellRangeAddress(row.getRowNum(), row.getRowNum() + this.eachRow - 1, this.columnIndex, this.columnIndex + this.columnExtend - 1);writeSheetHolder.getSheet().addMergedRegionUnsafe(cellRangeAddress);}}}
CellRangeAddress构造函数有4个参数
参数
0:合并起始行
1:合并终止行
2:合并起始列
3:合并终止列
CellRangeAddress cellRangeAddress = new CellRangeAddress(row.getRowNum(), row.getRowNum() + this.eachRow - 1, this.columnIndex, this.columnIndex + this.columnExtend - 1);writeSheetHolder.getSheet().addMergedRegionUnsafe(cellRangeAddress);
构造函数传进来的eachRow, columnExtend, columnIndex,都用在这里了
相关链接
easyexcel 动态合并单元格
EasyExcel合并单元格(一)相关推荐
- EasyExcel合并单元格策略样例
EasyExcel合并单元格策略样例 运行示例 处理前: 处理后: 说明 本次使用的是一次性绝对合并策略: List<OnceAbsoluteMergeStrategy> mergeStr ...
- easyexcel 合并单元格
easyexcel 合并单元格 ********************* 相关注解 ContentLoopMerge:标注在字段上 @Target({ElementType.FIELD}) @Ret ...
- EasyExcel合并单元格,通过注解方式实现自定义合并策略
EasyExcel合并单元格,通过注解方式实现自定义合并策略 简介 今天博主探讨如何实现EasyExcel自定义实现单元格合并策略,考虑需要抽象代码.适用于更多的业务场景,提供了两个工具类,参考过很多 ...
- EasyExcel合并单元格(同列相同数据合并)
合并后效果如下: 合并策略代码: public class CustomMergeStrategy extends AbstractMergeStrategy {/*** 分组,每几行合并一次*/pr ...
- EasyExcel合并单元格
文章目录 需求 思考 实现 需求 EasyExcel默认情况下写Excel是一行一行的,单元格不会自动合并,现在需求是合并这几列中相同的数据 思考 开始自己也不想做过多改动代码,经过阅读EasyExc ...
- easyExcel合并单元格策略
合并行: import com.alibaba.excel.metadata.CellData; import com.alibaba.excel.metadata.Head; import com. ...
- 阿里开源 Easy-Excel合并单元格数据
最终效果图 废话不多说,直接上代码 导入阿里云依赖jar包 封装实体类: 开始编写合并单元格: 组装数据的方法: 打完收工...欢迎大家来交流
- 解决easyexcel填充图片后合并单元格没有占满的问题
解决easyexcel合并单元格图片没有拉伸的问题 package com.demo.server.excel.handle;import com.alibaba.excel.enums.CellDa ...
- easyExcel导出表格及合并单元格
easyExcel导出表格及合并单元格 前言 废话不多说,直接上效果图. 效果图 合并之前导出的: 合并之后导出的: 代码的实现主要是合并之后的,为了更好的分清数据之间的关系. 二.代码 目录 < ...
最新文章
- c++成员函数可以将this传递给普通函数
- 科大星云诗社动态20210509
- Django框架搭建
- python 石头剪刀布,Python石头剪刀布完整代码
- django配置随时执行的脚本,使用运行时的manage环境执行程序
- 力扣面试题16.05.阶乘尾数
- python怎么矩阵的秩_python – 从numpy或matlab中的满秩非矩形矩阵中获取可逆方阵...
- efs解密-Advanced EFS Data Recovery2.1-含注册KEY
- php错误日志分析_php错误日志
- 《Go语言实战》摘录:7.2 并发模式 - pool
- mysql+文章显示_jsp+mysql文章内容分页显示
- 冲刺阶段站立会议每天任务6
- 【跌倒检测】基于matlab中值滤波+二值化跌倒检测【含Matlab源码 344期】
- python模块的分类有哪些_整理了一份清单,常见Python问题的快速解答包
- Java 多线程编程
- cisco服务器桌面命令行窗口,WLC调试和显示命令
- CH3 HTML基础 1
- 如何将华为云服务器重做系统并保留其中的指定数据
- 信息学奥赛一本通(c++):2024:【例4.10】末两位数
- 懂你的心 愿您的笑颜永在阳光下挥洒
热门文章
- matlab查找鞍点的位置,找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该...
- 多方安全计算-隐私信息检索(PIR)
- java.net.ConnectException: Connection timed out
- 开发过程中的一下异常
- 《The Pragmatic Programmer: From Journeymen to Master》
- 智能空开让用电更安全、管理更智能——电脑APP远程控制开合闸
- 【Linux后台开发系列】Nginx源码从模块开发开始,不再对nginx源码陌生丨源码分析
- Windows Update失败 还原更改。请勿关闭计算机
- 麒麟linux装软件源,中标麒麟6.5添加yum源安装软件
- Classloader和线程