springboot-实现excle文件导出的单元格相同内容合并
导出excle文件中的单元格有些需要合并如何操作
例如:左边的表格想合并单元格成右边的表格更加便于观看

一、依赖文件
<!-- excle操作-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.8</version>
</dependency> <dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.10</version>
</dependency> <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.1</version>
</dependency> <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.1</version>
</dependency>
二、代码
@RequestMapping("/merge")
public class MergeController {
@RequestMapping(value = "/excleExport" )
@ResponseBody
public void csvExport(HttpServletResponse response){
//表头
List<String> headerList = Arrays.asList("编号", "姓名");
//通过工具类创建writer,默认创建xls格式
ExcelWriter writer = ExcelUtil.getWriter();
//写入表头
writer.writeHeadRow(headerList);
//组织数据
// 组织数据
List<List<Object>> data = new ArrayList<>();
List list1 = Arrays.asList("001","张三");
List list2 = Arrays.asList("001","张三");
List list3 = Arrays.asList("001","张三");
List list4 = Arrays.asList("002","李四");
List list5 = Arrays.asList("002","李四");
List list6 = Arrays.asList("003","王五");
data.add(list1);
data.add(list2);
data.add(list3);
data.add(list4);
data.add(list5);
data.add(list6);
//一次性写出内容,使用默认样式,强制输出标题
writer.write(data,true);
//设置表格宽度自动
writer.autoSizeColumnAll();
//获取底层的Workbook和Sheet对象
Workbook workbook = writer.getWorkbook();
Sheet sheet = workbook.getSheetAt(0);
//合并相同编号的单元格
int startRow = 1; // 数据开始行(跳过表头)
for (int i = 1; i < data.size(); i++) {
if (!data.get(i).get(0).equals(data.get(i - 1).get(0))) {
System.out.println(data.get(i).get(0));
System.out.println(data.get(i - 1).get(0));
if (startRow < i) {
// 合并编号列 前两个参数起始行和结束行 后两个参数起始列和结束列
sheet.addMergedRegion(new CellRangeAddress(startRow, i , 0, 0));
// 合并姓名列
sheet.addMergedRegion(new CellRangeAddress(startRow, i , 1, 1));
}
startRow = i+1;
}
}
//response为HttpServeltReponse对象
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition","attachment;filename=1.xls");
ServletOutputStream out= null;
try{
out = response.getOutputStream();
writer.flush(out,true);
}catch (IOException e){
e.printStackTrace();
}finally {
//关闭writer,释放内存
writer.close();
}
IoUtil.close(out);
}
}
三、postman调用

下载后就是开头合并单元格后的效果
源码获取方式(免费):
(1)登录-注册:http://resources.kittytiger.cn/
(2)搜索:springboot导出excle+导出的excle单元格合并
springboot-实现excle文件导出的单元格相同内容合并的更多相关文章
- 读取Excel文件中的单元格的内容和颜色
怎样读取Excel文件中的单元格的内容和颜色 先创建一个Excel文件,在A1和A2中随意输入内容,设置A1的字体颜色为红色,A2的背景为黄色.需要 using Excel = Microsoft.O ...
- Excel催化剂开源第15波-VSTO开发之DataTable数据导出至单元格区域
上篇提到如何从Excel界面上拿到用户的数据,另外反方向的怎样输出给用户数据,也是关键之处. VSTO最大的优势是,这双向的过程中,全程有用户的交互操作. 而一般IT型的程序,都是脱离用户的操作,只能 ...
- 个人永久性免费-Excel催化剂功能第81波-指定单元格区域内容及公式填充
在日常数据处理过程中,需要对缺失数据进行填充时,按一定逻辑规则进行处理,实现快速填充,规范数据源.此篇给大家带来多种填充数据的场景. 业务使用场景 对各种系统中导出的数据,很多时候存在数据缺失的情况, ...
- 个人永久性免费-Excel催化剂功能第52波-相同内容批量合并单元格,取消合并单元格并填充内容
在高级Excel用户群体中无比痛恨的合并单元格,在现实的表格中却阴魂不散的纠缠不断.今天Excel催化剂也来成为“帮凶”,制造更多的合并单元格.虽然开发出此功能,请使用过程中务必要保持节制,在可以称为 ...
- WPF备忘录(3)如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter
一.如何从 Datagrid 中获得单元格的内容 DataGrid 属于一种 ItemsControl, 因此,它有 Items 属性并且用ItemContainer 封装它的 items. 但是,W ...
- 如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter
一.如何从 Datagrid 中获得单元格的内容 DataGrid 属于一种 ItemsControl, 因此,它有 Items 属性并且用ItemContainer 封装它的 items. 但是,W ...
- c#DataGridView数据绑定示例——格式化单元格的内容(转)
转自http://blog.csdn.net/testcs_dn/article/details/37834063 c#DataGridView数据绑定示例 格式化单元格的内容 在使用DataGrid ...
- 分列:将excel单元格的内容拆分为两列
提要:处理excel数据时有时需要把单元格的内容拆分为两列,可能方便外部软件的链接,可能使数据显示更明晰等等,有人说直接剪切加粘贴不就可以了吗,但是有时数据过多,这样处理很不效率,网上搜索的方法说插入 ...
- 获取wpf datagrid当前被编辑单元格的内容
原文 获取wpf datagrid当前被编辑单元格的内容 确认修改单元个的值, 使用到datagrid的两个事件 开始编辑事件 BeginningEdit="dataGrid_Beginni ...
- NPOI扩展--判断指定单元格是否为合并单元格和输出该单元格的行列跨度(维度)
因工作需要用到跨合并单元格获取数据,所以写了个NPOI扩展类. 主要方法如下: 1.判断指定行/列索引(单元格)是否为合并单元格. 2.获取指定列索引的实际含有数据的单元格. 3.返回指定行/列索引的 ...
随机推荐
- linux终端alacritty导致计算机死机的解决方式——Ubuntu18.04系统Nvidia显卡
如题所述,近日在自己Ubuntu18.04的系统上安装了alacritty终端,安装这个终端主要原因就是可以出现透明桌面,说白了就是漂亮,beautiful,但是这个终端安装后系统就变得极不稳定,经常 ...
- 读论文《Reinforced Attention for Few-Shot Learning and Beyond》
2022年4月22日,实验室开组会,我讲了论文<Reinforced Attention for Few-Shot Learning and Beyond>,最近整理资料又再读了一遍,这里 ...
- Apache DolphinScheduler数仓任务管理规范
前言: 大数据领域对多种任务都有调度需求,以离线数仓的任务应用最多,许多团队在调研开源产品后,选择Apache DolphinScheduler(以下简称DS)作为调度场景的技术选型.得益于DS优秀的 ...
- Python 提取出SQL语句中Where的值的方法
1.方法一:使用sqlparse库的方法 为了提取SQL语句中WHERE子句的值,我们可以利用Python的sqlparse库,这是一个专门用于解析SQL语句的库.以下是一个示例代码,演示如何使用sq ...
- 微服务全链路跟踪:grpc集成jaeger
微服务全链路跟踪:grpc集成zipkin 微服务全链路跟踪:grpc集成jaeger 微服务全链路跟踪:springcloud集成jaeger 微服务全链路跟踪:jaeger集成istio,并兼容u ...
- mysql 读写分离之主从配置
#mysql主从复制 ###下载mysql安装包 ###安装master mysql . 检查当前机器是否已经安装mysql yum repolist enabled | grep "mys ...
- Win32 处理多个按钮共用一个事件消息
今天在学习制作计算器小程序中,碰到要多个按钮共用一个事件的问题, 现记录下来. 在窗体上按钮排列 排列的时候要按顺序排放,也就是说,0-9的ID号要连着的. #define IDD_DIALOG1 1 ...
- PPT或Visio比较舒适的RGB配色参数
1.187 204 235 2.222 156 83 3.117 156 83 4.64 116 52 5.117 121 74 6.69 137 148 7.182 194 154 8.207 19 ...
- pom阿里加速镜像地址
<repositories> <repository> <id>alimaven</id> <name>aliyun maven</n ...
- stm32学习之ADC入门
ADC_SampleTime 用途:在ADC通道配置(ADC_RegularChannelConfig)需要传输的参数. 含义:指两个采样阶段之间的延迟周期数,该参数会影响ADC在采样过程中的性能和准 ...